私は 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;
解決済み: 問題がわかりました。単語の後の句読点を考慮していませんでした。