Я начинаю изучать perl, и я пишу простой пузырь, используя регулярные выражения. Однако я не могу заставить его правильно сортировать (в алфавитном порядке, ограничивая пробелы). Он просто заканчивается тем, что возвращает ту же строку. Может кто-нибудь помочь? Я уверен, что это действительно просто. Спасибо:Запись сортировки пузыря с использованием регулярных выражений Perl
#!/usr/bin/perl
use warnings;
use strict;
my $document=<<EOF;
This is the beginning of my text...#more text here;
EOF
my $continue = 1;
my $swaps = 0;
my $currentWordNumber = 0;
while($continue)
{
$document =~ m#^(\w+\s+){$currentWordNumber}#g;
if($document =~ m#\G(\w+)(\s+)(\w+)#)
{
if($3 lt $1)
{
$document =~ s#\G(\w+)(\s+)(\w+)#$3$2$1#;
$swaps++;
}
else
{
pos($document) = 0;
}
$currentWordNumber++;
}
else
{
$continue = 0 if ($swaps == 0);
$swaps = 0;
$currentWordNumber = 0;
}
}
print $document;
РЕШЕНИЕ: Я выяснил, что проблема. После слов я не принимал во внимание знаки препинания.
Почему регулярное выражение и пузырь сортировка? – nhahtdh
Я пытаюсь изучить perl, и я увидел аналогичный пример в книге «Начало Perl». Я пытаюсь воспроизвести его – Nosrettap
Это звучит как плохая идея - приходит «правильный инструмент для правильной работы». Регулярные выражения отлично подходят для сопоставления/идентификации и изменения текста, который, как известно, следует за каким-то шаблоном - следовательно имя. Разновидность пузыря - не такая проблема. Перл: уверен. Regex: нет. – lxop