В Perl у меня есть строка, которая выглядит примерно как
my $str = "one 10 two 20 three 30";
Теперь я бы хотела разбить эту строку на пары слово-номер, но безуспешно.
Я думал, что смогу сделать
my @pairs = split /([a-z]+[^a-z]+)/, $str;
и тогда получу
$pairs[0] eq 'one 10 '
$pairs[1] eq 'two 20 '
$pairs[2] eq 'three 30'
Однако я получаю
$pairs[0] eq ' '
$pairs[1] eq 'one 10 '
$pairs[2] eq ' '
$pairs[3] eq 'two 20 '
$pairs[4] eq ' '
$pairs[5] eq 'three 30'
Теперь я могу использовать grep для желаемогорезультат:
my @pairs = grep {$_ =~ /\S/} split /([a-z]+[^a-z]+)/, $str;
Но мне было интересно, есть ли более элегантное решение этой проблемы.