use strict; use warnings; my $ham = "spam\tspam\tspam\t\tyam\tclam"; my @foo; my @jam = ($ham =~ (m/^[^\t]*\t[^\t]*(?:\t([^\t]*)(?{push @foo, $^N})){3}\t[^\t]*$/)); print join("\n", '**', @jam, '**', ''); print join("\n", '**', @foo, '**', '');