Here's how I solved my problem:
Beginning file:
open (BEGIN_FILE, "$beg_file") || die "Cannot open: $!\n";
while ($line = <BEGIN_FILE>) {
chomp $line;
next if ($line =~ /unknown|shutdown|NONE/);
($as,$as_name,$nbr,$rtr,$int,$address,$int_name,$ifindex,$vpi,$vc
+i) = split(' ',$priv_line);
$begin{$int_name} = $rtr;
}
All the rest of the files:
foreach $file(@end) {
open FILE, "$file" || die "Cannot open: $!\n";
while ($line = <FILE>) {
chomp $line;
next if ($line =~ /unknown|shutdown|NONE/);
($as,$as_name,$nbr,$rtr,$int,$address,$int_name,$ifindex,$vpi,
+$vci) = split(' ',$priv_line);
$end{$int_name} = $rtr;
}
}
Then, in order to end up with a hash of arrays, containing files that exist in my "non-beginning" files, but not in the beginning file:
my %good_files = ();
foreach $key (sort keys %end) {
if (!exists($begin{$key})){
push (@{$good_files{$begin{$key}}}, ($key));
}
}
Works like a charm! Thanks to everyone for their help on this. |