我想備份散列,保留原始散列,並使用備份的散列數據。散列副本和刪除perl
並刪除備份哈希數據。
但是,原始散列數據已被刪除。
這是代碼。
my %hash = (
'data1' => {
'data2' => {
'data3' => 'one',
},
},
);
foreach (1..3) {
my %hash_backup = %hash;
print $hash{'data1'}->{'data2'}->{'data3'},"\n";
print $hash_backup{'data1'}->{'data2'}->{'data3'},"\n";
print "-------------------------------\n";
delete $hash_backup{'data1'}->{'data2'};
print $hash{'data1'}->{'data2'}->{'data3'},"\n";
print $hash_backup{'data1'}->{'data2'}->{'data3'},"\n";
print "================================\n";
}
結果,
one
one
-------------------------------
================================
-------------------------------
================================
-------------------------------
================================
如果更改刪除代碼,它正常工作。
delete $hash_backup{'data1'};
結果,
one
one
-------------------------------
one
================================
one
one
-------------------------------
one
================================
one
one
-------------------------------
one
================================
我認爲這是一個散列引用問題。
如何保留原始散列並刪除備份散列?
你是不是值複製,要複製引用。這只是創建更多的指向相同數據的指針。 – simbabque