Как я могу разделить строку на две части с Perl?

У меня есть строка, состоящая из нескольких частей, разделенных вкладками:

 Hello\t2009-08-08\t1\t2009-08-09\t5\t2009-08-11\t15

Я хочу разбить его только на первой вкладке, так что "Hello" заканчивается в $k, а rest заканчивается на $v. Это не работает:

my ($k, $v) = split(/\t/, $string);

Как я могу это сделать?

Ответ 1

Чтобы получить это, вам нужно использовать третий параметр split(), который дает функции максимальное количество полей для разбивается на (если положительно):

my($first, $rest) = split(/\t/, $string, 2);

Ответ 2

Нет. Это даст вам первые два предмета и бросит остальных. Попробуйте следующее:

my ($k, $v) = split(/\t/, $string, 2);

Ответ 3

Другой вариант - использовать простое регулярное выражение.

my($k,$v) = $str =~ /([^\t]+)\t(.+)/;