use Fatal qw/open/; my %h; open my $fh, '<', '/tmp/file1'; while ( defined ($_ = <$fh>)){ /^([\d.]+)/ and $h{$1}++; } open $fh, '<', '/tmp/file2'; while ( defined ($_ = <$fh>)){ /^([\d.]+)/ and delete $h{$1}; } print join "\n", keys %h;