use strict; use warnings; use Data::Comparator qw(data_comparator); use Data::Dumper; my $file1 = <<EOF; Cell: AND1 A1 A2 Y Cell: INV1 A Z EOF my $file2 = <<EOF; Cell: AND1 A B Y Cell: INV2 A Z EOF my $fh; my $cell; my %lib1; open $fh, '<', \$file1 or die "Can not open file: $!"; while (<$fh>) { chomp; if (/ ^ Cell: \s+ (.*) /x) { $cell = $1; } else { my @ports = split; push @{ $lib1{$cell} }, \@ports; } } my %lib2; open $fh, '<', \$file2 or die "Can not open file: $!"; while (<$fh>) { chomp; if (/ ^ Cell: \s+ (.*) /x) { $cell = $1; } else { my @ports = split; push @{ $lib2{$cell} }, \@ports; } } my $diff = data_comparator(\%lib1, \%lib2); print Dumper($diff) unless ($diff->is_empty()); __END__ $VAR1 = bless( { 'AND1' => bless( [ bless( [ bless( do{\(my $o = 'A')} +, 'Data::Differences' ), bless( do{\(my $o = 'B')} +, 'Data::Differences' ) ], +'Data::Differences' ) ], 'Data::Differences' ), 'INV2' => bless( do{\(my $o = [ [ 'A', 'Z' ] ])}, 'Data::Differences' ) }, 'Data::Differences' );
In reply to Re: comparison of two hashes
by toolic
in thread comparison of two hashes
by blackgoat
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |