データベースからシリアル化されたphpデータを取り出し、シリアル化解除し、データを変更してから再びシリアル化するperlスクリプトがあります。データのシリアライズ/デシリアライズと変更
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);
}
OUTPUT:
$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: 私は何をしたいの(以下に示すように)名前&ペットのフィールドを変更が、それらを修正するために、個々のフィールドにアクセスする方法を見つけ出すことはできませんですThxからHugmeirまで、次のようなことがありますが、これはうまくいくようです。私はインデックス番号を知らない場合、これは '名前'を変更するための最良の方法ですか?
for my $hashref (@{$array_ref}) {
if ($hashref->{name} =~ /Mary/){
$hashref->{name} = 'Jane';
}
}
メアリーをジェーンに変更したい場合は、$ hashref - > {name} eq 'Mary'';パターンマッチでもMaryjoまたはRoseMaryがJaneに変わります。 – ysth