split
хорошо, когда вы держите заказ. Если вы нарушаете порядок, у вас есть небольшая проблема. У вас есть два варианта:
- разделить в соответствии с
\t
и затем присоединиться к тем, которые вы хотите.
- быть явным.
пример первого выбора:
my ($a,$b,$c1, $c2, $d) = split /\t/, $_;
my $c = "$c1\t$c2";
пример второго выбора:
my ($a, $b, $c, $d) = (/(.*?)\t(.*?)\t(.*?\t.*?)\t(.*?)/;
каждый набор скобок содержит именно то, что вы хотите. Использование не жадного модификатора (?
) после *
гарантирует, что скобки не будут захватывать \t
.
Редактировать: если вы хотите иметь произвольное количество переменных, лучше всего использовать массив:
my @x = split /\t/, $_;
my $a = $x[0];
my $b = $x[1];
my $c = join "\t", @x[2..($#x-1)];
my $d = $x[-1];