for my $zipCode (sort{ $a <=> $b }(keys(%zips))) { for my $offset (@{$zips{$zipCode}}) { seek FILE, $offset, 0; while () { last unless (/Zip:$zipCode/); print SORTED $_; } } }