use warnings;
use strict;
my $f1 = 'file1.txt';
my $f2 = 'file2.txt';
my @original;
my @gottem;
open( my $file1, '<', $f1 );
while ( my $line1 = (<$file1>) ) {
next if ( $line1 =~ /^#/ );
chomp($line1);
open( my $file2, '<', $f2 );
while ( my $line2 = (<$file2>) ) {
next if ( $line2 =~ /^#/ );
chomp($line2);
my ( $leftside, $rightside ) = split( /\s/, $line2, 2 );
if ( $line1 =~ $leftside ) {
push( @original, $rightside );
}
}
}
# print "$_\n" for(@original);
for (@original) {
open( my $file_2, '<', $f2 );
while ( my $line_2 = (<$file_2>) ) {
my ( $first, $last ) = split( /\s/, $line_2, 2 );
if ( $last =~ $_ ) {
push( @gottem, $line_2 );
}
}
}
print $_ for (@gottem);
####
123
456
789
####
123 string 1
111 string 1
script should skip this line
222 string 1
333 string 1
456 string 2
444 string 2
it should skip this line as well
555 string 2
666 string 2
789 string 3
777 string 3
also skipping this line too
888 string 3
999 string 3
####
123 string 1
111 string 1
222 string 1
333 string 1
456 string 2
444 string 2
555 string 2
666 string 2
789 string 3
777 string 3
888 string 3
999 string 3