sub read_stuff { my ($handle, $delim, $col) = @_; my $prep = '^\s*'; $prep .= "\w+${delim}+" for 1 .. $col - 1; $prep .= "(\w+)(?:${delim}|$)"; my $regex = qr/$prep/; my @list = map { /$regex/o } <$handle>; return @list; } my $handle = IO::File->new(filename => "some_file"); my @list = read_stuff($handle, ' ', 6);