1

これを行うための非常に簡単な方法があると確信していますが、例を検索するたびに、2 段階の方法が表示されます。これが私が通常行うことです:

$data =~ m/(my_query)/;
$result = $1;

$result を正規表現と同じ行に設定し、$1 を使用しないようにします。ありがとう!

4

3 に答える 3

4
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
$
于 2013-05-28T18:21:54.257 に答える
0
$data="abcde";
$data =~ s/(cde)/$result=$1/e;
于 2013-05-28T23:26:02.600 に答える