#!/usr/bin/perl use Modern::Perl; #does an implict use strict; use warnings and activates "new" features no warnings qw /uninitialized/; my @result; { open my $INPUTFILE, '<', '/Users/ts/input.txt' or die "File error: input file: $!"; while (<$INPUTFILE>) { chomp; my ($index, $value) = split /\t/; $result[$index] = $value; } } { open my $OUTPUTFILE, '>', '/Users/ts/output.txt' or die "File error: output file: $!"; while (my ($index, $value) = each @result) { next if $value > 500; say $OUTPUTFILE, "$index\t$value"; } } input.txt 1 10 2 11 3 9 4 500 5 550 etc