@ARGV = qw(file2); my %names_in_file2; while (<>) { my ($name) = split /\|/; $names_in_file2{$name}++; } @ARGV = qw(file1); $^I = ".bak"; # create backup file while (<>) { # in-place edit my ($name) = split /\|/; print unless $names_in_file2{$name}; }