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