Unsur bashele alınırken, sorunuz bana perlkoddaki bu değişkenlerle karşılaştığınızı düşündürüyor .
$&ve $_içindeki özel değişkenlerdir perl. Ve özellikle perlkabuk kodundan çağrılan kodda bulunurlar .
$_birçok perlişlevin ve işleçlerin üzerinde çalıştığı varsayılan değişkendir . Bu değişken aynı zamanda giriş işleçleri tarafından ayarlanan varsayılan değişkendir.
İçinde:
perl -pe 'some-code' < some-input
Bazı kodlar, bazı girdilerin her satırı için, satır depolanmış olarak çalıştırılır $_ve içeriği, $_bazı kodlar çalıştıktan sonra yazdırılır.
s/regex/replacement/Operatör üzerinde çalıştığı $_varsayılan olarak. Yani sık sık şöyle şeyler bulursunuz:
perl -pe 's/foo/bar/'
Şunlar için kısadır:
perl -pe '$_ =~ s/foo/bar/'
(yukarıda, $_kadarıyla kabuk söz konusu geçirilen bir kelimesi kelimesine tartışmanın sadece bir parçasıdır perltercüman bir kabuk değişkeni, o değil. O kelimesi kelimesine argüman olarak geçirilen perl(ifade -eetmek) perl, ne için var perlo a olarak yorumlanır olduğunu değişken).
$&perlson eşleşen işleçle eşleşen her şeye genişleyen başka bir özel değişkendir ( m/.../, s/.../.../...).
Örneğin:
$ echo foo | perl -lne '
print "The last character in $_ is $&" if m/.$/'
The last character in foo is o
Veya:
$ echo foo bar | perl -pe 's/[aeiou]+/<$&>/g'
f<oo> b<a>r