私は perl を学んでいます。今は、マッチ キャプチャから、同時にいくつかの変数を入力しようとしています。以下のように、「長い」バージョンが機能しています。
$pc = ...
while ($pc =~ m/bla1(.*?)bla2(.*?)bla3(.*?)bla4(.*?)bla5(.*?)bla6(.*?)bla7/g) {
$var1 = $1;
$var2 = $2;
$var3 = $3;
$var4 = $4;
$var5 = $5;
$var6 = $6;
...
}
単一のキャプチャ(whileループの外側)の場合、これを実行できることがわかっています:
my $string = 'abcde';
my @captures = $string =~ m/.(.)(.)(.)./;
my ($aa,$ab,$ac) = @captures;
print ("$aa - $ab - $ac\n");
while ループ内のすべての変数を一度に設定する方法はありますか? 以下のコードのようなことをする必要がありますか、それとももっと簡単な (2 つの正規表現を必要としない) 方法はありますか?
while ($pc =~ m/bla1(.*?)bla7/g) {
my @captures = $1 =~ m/(.*?)bla2(.*?)bla3(.*?)bla4(.*?)bla5(.*?)bla6(.*?)/;
($var1,$var2,$var3,$var4,$var5,$var6) = @captures;
...
}
前もって感謝します。