Как я могу разделить строку только на две части с Perl? - PullRequest
11 голосов
/ 11 сентября 2009

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

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

Я хочу разделить его только на первой вкладке, чтобы «Hello» заканчивалось на $k, а остальные - на $v. Это не совсем работает:

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

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

Ответы [ 3 ]

37 голосов
/ 11 сентября 2009

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

my($first, $rest) = split(/\t/, $string, 2);
7 голосов
/ 11 сентября 2009

Нет. Он даст вам первые два предмета и бросит остальные. Попробуйте это:

my ($k, $v) = split(/\t/, $string, 2);
1 голос
/ 15 сентября 2009

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

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