use strict; use warnings; my @all_times; while (my $line = ) { if ($line =~ /^top - /) { chomp $line; my ($top, $dash, $time, @rest) = split /\s+/, $line; push @all_times, $time; } } for (@all_times) { print $_, "\n"; } __DATA__ top - 00:35:18 up... blah blah blah ..... top - 00:35:15 up... fwertwe blah blah blah ..... blah blah blah ..... blah blah blah ..... blah blah blah ..... blah blah blah ..... top - 00:35:20 up... blah blah blah ..... top - 00:35:22 up... blah blah blah ..... top - 00:35:30 up... blah blah blah ..... #### 00:35:18 00:35:15 00:35:20 00:35:22 00:35:30