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' );
|