sub get_record { my $FH = shift; state $previous_account; my @record; while (my $line = <$FH>) { if ($line =~ /^\s{1,10}\d{8}-\d{14}\s*$/) { # Found an account number if (!defined $previous_account) { # It's the first, so just store it and continue $previous_account = $line; } else { # Add account number to start of record unshift @record, $previous_account; # Save current account for next record $previous_account = $line; return @record } } else { push @record, $line; } } # Be sure to return the record when the file ends, too unshift @record, $previous_account; return @record; }