Sementara bashaspek telah dibahas, pertanyaan Anda membuat saya berpikir Anda telah menemukan variabel-variabel dalam perlkode.
$&dan $_merupakan variabel khusus dalam perl. Dan mereka terutama ditemukan dalam perlkode yang dipanggil dari kode shell.
$_adalah variabel default yang digunakan banyak perlfungsi dan operator. Variabel itu juga merupakan variabel default yang ditetapkan oleh operator input.
Di:
perl -pe 'some-code' < some-input
Beberapa kode dijalankan untuk setiap baris beberapa input, dengan baris disimpan $_, dan konten $_dicetak setelah beberapa kode dijalankan.
The s/regex/replacement/Operator bekerja pada $_secara default. Jadi Anda sering menemukan hal-hal seperti:
perl -pe 's/foo/bar/'
Yang merupakan kependekan dari:
perl -pe '$_ =~ s/foo/bar/'
(di atas,, $_sejauh menyangkut shell hanyalah bagian dari argumen kata demi kata yang diteruskan ke perlpenerjemah, itu bukan variabel shell. Argumen kata demi kata tersebut dilewatkan sebagai perlekspresi ( -e) ke perl, dan untuk perlitu ditafsirkan sebagai variabel).
$&adalah perlvariabel khusus lain yang diperluas ke apa pun yang cocok dengan operator pencocokan terakhir ( m/.../, s/.../.../...).
Contohnya:
$ echo foo | perl -lne '
print "The last character in $_ is $&" if m/.$/'
The last character in foo is o
Atau:
$ echo foo bar | perl -pe 's/[aeiou]+/<$&>/g'
f<oo> b<a>r