У меня есть скрипт perl, который извлекает сериализованные данные php из базы данных, десериализует их, модифицирует данные, а затем снова сериализует. Я хотел бы изменить поля имени и питомца (как указано ниже), но не могу понять, как получить доступ к отдельным полям, чтобы изменить их:
use PHP::Serialization qw(serialize unserialize);
use Data::Dumper qw(Dumper);
###blah, blah, blah
while ( @a = $sth->fetchrow() ){
my $hashref = unserialize( $a[0] );
print Dumper($hashref);
}
ВЫХОД:
$VAR1 = [
bless( {
'name' => 'Fred', # I want this to be Dave
'pet' => 'Cat', # I want this to be Dog
'date' => '1977'
}, 'PHP::Serialization::Object::stdClass' ),
bless( {
'name' => 'Mary', # I want this to be Jane
'pet' => 'Worm', # I want this to be Pig
'date' => '1977'
}, 'PHP::Serialization::Object::stdClass' )
];
UPDATE:
Спасибо Hugmeir, у меня есть следующее, которое, кажется, работает. Это лучший способ изменить имя, если я не знаю номер индекса?
for my $hashref (@{$array_ref}) {
if ( $hashref->{name} =~ /Mary/ ){
$hashref->{name} = 'Jane';
}
}