Ответ 1
Чтобы получить это, вам нужно использовать третий параметр split()
, который дает функции максимальное количество полей для разбивается на (если положительно):
my($first, $rest) = split(/\t/, $string, 2);
У меня есть строка, состоящая из нескольких частей, разделенных вкладками:
Hello\t2009-08-08\t1\t2009-08-09\t5\t2009-08-11\t15
Я хочу разбить его только на первой вкладке, так что "Hello" заканчивается в $k
, а rest заканчивается на $v
. Это не работает:
my ($k, $v) = split(/\t/, $string);
Как я могу это сделать?
Чтобы получить это, вам нужно использовать третий параметр split()
, который дает функции максимальное количество полей для разбивается на (если положительно):
my($first, $rest) = split(/\t/, $string, 2);
Нет. Это даст вам первые два предмета и бросит остальных. Попробуйте следующее:
my ($k, $v) = split(/\t/, $string, 2);
Другой вариант - использовать простое регулярное выражение.
my($k,$v) = $str =~ /([^\t]+)\t(.+)/;