単語が2つしかない行に正規表現を適用したいと思います。私のファイルは次のようになり、括弧内の単語の間に可変数のスペースがあります。
Politician_name :(ホセマリアアズナール|ホセマリアアズナール|ホセマリアアズナール|ホセマリアアズナール); Politician_name :(トニーブレア|トニーブレア|トニーブレア|トニーブレア);
出力として欲しい:
Politician_name :(トニーブレア|トニーブレア|トニーブレア|トニーブレア|ブレアトニー|ブレアトニー);
私のコードは各行に正規表現を適用し、次のような誤った出力を受け取ります。
Politician_name :(ホセマリアアズナール|ホセマリアアズナール|ホセマリアアズナール|ホセマリアアズナール|マリアホセ|マリアホセ);
これは私のコードです:
use strict;
use warnings;
use Data::Dumper;
use utf8;
open(IN, $ARGV[0]) or die "Can't read file $ARGV[0]\n";
while (my $line=<IN>)
{
my ($pol,$value) = split(/:/, $line);
warn Dumper \$pol;
chomp($value);
$value=~ s/[ ]+/ /g;
$value=~ s/\);//g;
my $n;
$n = $1 if ($value =~ /\((.+?)\|/);
$n=~ m/(\w*)\s(\w*)/g;
my $swapname="$2 $1";
warn Dumper \$swapname;
print "$pol: $value | $swapname );\n";
}
close(IN);
3語の名前の処理を停止するにはどうすればよいですか?