in reply to Re^2: Extract the common values in hash of array with double keys
in thread Extract the common values in hash of array with double keys
delete $data{$key2}{$sum2};
UPDATE: Oops, I think I misunderstood your problem. You might include a check for existence before you access an array value in the loop
if (exists $data{$key1}{$sum1}) { ... # and later if (exists $data{$key2}{$sum2}) { ... # or next if (not exists $data{$key2}{$sum2});
You might even avoid one of the exists-lines if you don't delete the second item (i.e. $data{$key2}{$sum2}) but the original item (i.e. $data{$key1}{$sum1}) and exit the inner loops immediately. If a third identical item is there it will be detected when the second item later becomes an original item. Since you never delete an item that $key1 and $sum1 might encounter later on, you don't need to test $data{$key1}{$sum1} for existence.
Whether your code is correct I can't easily judge (without investing a lot more time). Maybe you should extract your algorithm to a subroutine and the comparision of the two arrays to another subroutine, that would make your program much more readable and testable. Then write some test cases and compare the expected result with what you really get
|
|---|