Я пытаюсь разделить строку с несколькими пробелами. Я только хочу разделить, где существует 2 или больше пробела. Я попробовал несколько вещей, и я продолжаю получать тот же вывод, который является, что он разделяет после каждой буквы. Вот последняя вещь, которую я попробовал
@cellMessage = split(s/ {2,}//g, $message);
foreach(@cellMessage){
print "$_ \n";
}
Попробуйте вот это: \b(\s{2,})\b
Это даст вам все, что имеет несколько пробелов между границами слов.
use strict;
use warnings;
use Data::Dumper;
# 1 22 333
my $message = 'this that other 555';
my @cellMessage = split /\s{2,}/, $message;
print Dumper(\@cellMessage);
__END__
$VAR1 = [
'this that',
'other',
'555'
];
Сохраняя синтаксис, который вы использовали в своем примере, я бы порекомендовал следующее:
@cellMessage = split(/\s{2,}/, $message);
foreach(@cellMessage){
print "$_ \n";
}
, потому что вы будете соответствовать любому символу пробела (табуляции, пробелы и т. Д. ...). Проблема с исходным кодом заключалась в том, что инструкция split
ищет шаблон, а указанное вами регулярное выражение привело к пустой строке //
, которая разбивает $ message
на отдельные символы.