use strict; use warnings; my $file1Str = <) { my @parts = split '/', $line; my $key = join '/', @parts[0 .. 3]; ++$lookup{$key}; } close $file2In; open my $file1In, '<', \$file1Str or die ("Could not open file!"); while (my $line = <$file1In>) { my @parts = split '/', $line; $parts[-1] =~ s/\.xml//i; my $key = join '/', @parts[0 .. 2, 4]; next if exists $lookup{$key}; print $line; } close $file1In; #### 2002/04/01/bbb/abc.xml