http://qs321.pair.com?node_id=1068145


in reply to Re^2: Perl delete function
in thread Perl delete function

Keys in hashes are unique, so you never had more than one "apple" in hash %m2.

But it's still unclear which logic you expect, because thats a perfect set operation.

Could it be that you want to compare arrays one by one by position?

Then please use a loop to do so.

Cheers Rolf

( addicted to the Perl Programming Language)

Replies are listed 'Best First'.
Re^4: Perl delete function
by annel (Novice) on Dec 23, 2013 at 07:03 UTC
    Yes, I would like to compare the arrays one by one by position. I have attempted following:
    use strict; use warnings; open (FILE, "a") or die "Unable to open ref file.\n"; my @data1 =<FILE> ; close(FILE); open (FILE, "b") or die "Unable to open new file.\n"; my @data2 =<FILE> ; close(FILE); my $i; for( $i = 0; $i < 2; $i++){ if ($data1[$i] ne $data2[$i]){ print "Mismatch for $data1[$i] and $data2[$i]\n"; exit; } }
    But the error occurs when file 1 contains one line and file 2 contains 2 lines.

      You need to determine the size of the smaller array and restrict the loop accordingly.

      my $size = @data1 < @data2 ? @data1 : @data2;
        Thanks for the tips. It works.