%foo = (); while () { next unless /(Starting|Finished) build of/; chomp; ($f1, $f2, $f3, $f4, $f5, $f6, $f7) = split; if ($f3 eq "Starting") { $foo{$f6} = 1; } if ($f3 eq "Finished") { $f6 =~ s/:$//; $foo{$f6} = 0; } } print "ports in progress at end:\n"; foreach $k (sort keys %foo) { printf "%s\n", $k if $foo{$k} == 1; }