open my $fh1, '<', "file1" or die "Couldn't read 'file1': $!"; my %delete = map { s/\s*$//; $_ => 1 } <$fh1>; open my $fh2, '<', "file2" or die "Couldn't read 'file2': $!"; while( <$fh2>) { my( $key, $value ) = split /\s*=/; if( ! $delete{ $key }) { print $_; } else { # skip this key }; };