my (@opn, @hold); while (my $line = ) { my ($_date, $id, $code) = split(/ \| /, $line); push @opn, $id if ($code =~ /open$/i); push @hold, $id if ($code =~ /hold$/i); } # do whatever you want with them now.. __DATA__ Date: Jan 1 2001 3:30PM | ID: 1 | Code: open Date: Jan 1 2001 3:35PM | ID: 1 | Code: open Date: Jan 1 2001 3:37PM | ID: 1 | Code: hold Date: Jan 1 2001 3:46PM | ID: 1 | Code: hold Date: Jan 1 2001 4:10PM | ID: 1 | Code: open Date: Jan 1 2001 4:35PM | ID: 1 | Code: hold