Sementara bash
aspek telah dibahas, pertanyaan Anda membuat saya berpikir Anda telah menemukan variabel-variabel dalam perl
kode.
$&
dan $_
merupakan variabel khusus dalam perl
. Dan mereka terutama ditemukan dalam perl
kode yang dipanggil dari kode shell.
$_
adalah variabel default yang digunakan banyak perl
fungsi 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 perl
penerjemah, itu bukan variabel shell. Argumen kata demi kata tersebut dilewatkan sebagai perl
ekspresi ( -e
) ke perl
, dan untuk perl
itu ditafsirkan sebagai variabel).
$&
adalah perl
variabel 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