なぜこれがfooとbarの間の文字列を返すのですか?
my ($var) = $my_string =~ /foo(.*)bar/;
そして、これはヒットがあった場合は1を返し、一致がない場合は何も返しません。
my $var = $my_string =~ /foo(.*)bar/;
具体的には、変数を囲む括弧は何をしているのですか?
Perlの他の多くのものと同様に、その式の結果は、入れられるコンテキストに基づいて異なります。
パターンマッチ演算子は、リスト連絡先のキャプチャのリストを返します(最初の例)。演算子がスカラーコンテキストで評価される場合(2番目の例)、ブール値は、演算子が一致したかどうかを示し、代わりに返されます。
特定の質問に答えるために、周りに親を配置すると、$var
それがリストコンテキストに強制され、パターン一致から返されたリストの最初の要素がに割り当てられ$var
ます。
これは事実上、これらのステートメントと同じです。
my @matches = $my_string =~ /foo(.*)bar/;
my $var = $matches[0];
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加