my %hash; my @key_order; while( defined( my $line = <> ) ) { my ($first, $third) = (split ' ', $line)[0, 2]; $hash{ $first } = $third; push @key_order, $first; } ## In the order they appeared . . . for my $key (@key_order) { say $hash{ $key }; } ## Or in their random ordering but with the match . . . for my $key ( keys %hash ) { say qq{$key => $hash{ $key }}; }