これを行うための非常に簡単な方法があると確信していますが、例を検索するたびに、2 段階の方法が表示されます。これが私が通常行うことです:
$data =~ m/(my_query)/;
$result = $1;
$result を正規表現と同じ行に設定し、$1 を使用しないようにします。ありがとう!
my($result) = ($data =~ m/(my_query)/);
コメントに記載されているようにmy($result)
、一致の結果に配列コンテキストを提供するには、括弧が必要です。配列コンテキストでは、$1
配列に割り当てられた etc を取得します。使用できます@result = ($data =~ m/(my_query)/);
。を省略できますがmy
、括弧はそのままにしておく必要があります。$result = ($data =~ m/(my_query)/)[0];
( ysthに感謝)を使用して配列に添字を付けることができます。ここでのキーワードは「配列コンテキスト」です。
例:
$ perl -e '$data="abcdef";my($result)=($data =~ m/(cde)/); print "$result\n"'
cde
$ perl -e '$data="abcdef"; ($result)=($data =~ m/(cde)/); print "$result\n"'
cde
$ perl -e '$data="abcdef"; @result =($data =~ m/(cde)/); print "$result[0]\n"'
cde
$ perl -e '$data="abcdef"; $result =($data =~ m/(cde)/)[0]; print "$result\n"'
cde
$
$data="abcde";
$data =~ s/(cde)/$result=$1/e;