Я хочу сделать это в Perl:
>> "foo bar baz".scan /(\w+)/ => [["foo"], ["bar"], ["baz"]]
Есть предложения?
По сути, это то же самое.
my @elem = "foo bar baz" =~ /(\w+)/g
Вы также можете установить переменную «скаляр по умолчанию» $_.
$_
$_ = "foo bar baz"; my @elem = /(\w+)/g;
См. perldoc perlre для получения дополнительной информации.
perldoc perlre
Если вы хотите использовать только эту строку в качестве массива, вы можете использовать qw().
qw()
my @elem = qw"foo bar baz";
См. perldoc perlop (Операторы цитирования и подобные) .
perldoc perlop
Кроме того, разделить, например,
my $x = "foo bar baz"; my @elem = split(' ', $x);
OR
my @elem = split(/\w+/, $x);
и т.д.
Они представляют собой ключевую концепцию perl - скаляр и контекст списка. Присвоение выражения массиву вызывает контекст списка, как и цикл while.
Таким образом, эквивалентом блочной формы сканирования String # является использование регулярного выражения с циклом while:
while ("foo bar baz" =~ /(\w+)/) { my $word = $1; do_something_with($word); }