回答:
一方でbash側面がカバーされている、あなたの質問は、私はあなたがこれらの変数間で来ていると思わせるperlコード。
$&およびの$_特殊変数ですperl。そして、それらは特にperlシェルコードから呼び出されたコードで見つかります。
$_多くのperl関数と演算子が動作するデフォルトの変数です。この変数は、入力演算子によって設定されるデフォルトの変数でもあります。
に:
perl -pe 'some-code' < some-input
some-codeはsome-inputのすべての行に対して実行され$_、その行はに格納され、$_some-codeの実行後にの内容が出力されます。
s/regex/replacement/オペレータは、上の作品$_はデフォルトで。したがって、次のようなことがよくあります。
perl -pe 's/foo/bar/'
これは以下の略です:
perl -pe '$_ =~ s/foo/bar/'
(上記、$_、限りシェルが懸念されるに渡さそのまま引数のほんの一部であり、perlインタプリタはシェル変数は、それがされていません。その逐語的な引数は、次のように渡されますperl(表現-eに)perl、そしてそれがためだperl、それはAと解釈されていること変数)。
$&perl最後に一致した演算子(m/.../、s/.../.../...)で一致したものに展開される別の特殊変数です。
例えば:
$ echo foo | perl -lne '
print "The last character in $_ is $&" if m/.$/'
The last character in foo is o
または:
$ echo foo bar | perl -pe 's/[aeiou]+/<$&>/g'
f<oo> b<a>r