use strict; use warnings; my $label = "some string"; my $apex = 10; # some number my $reference = "somefile.txt"; my $name = "out.txt"; open IN, "<", $reference or die "Cannot open file $reference.\n"; open OUT, ">", "temp_marker_$name" or die "Cannot open file temp_marker_$name.\n"; while() { my @fields = split; # cannot remember what awk splits on by default if( $fields[0] eq $label and $fields[2] <= $apex and $fields[3] >= $apex ) { print OUT $_; } } close OUT; close IN;