Saya telah melihat banyak cara menjalankan kode Perl atau script, dengan flag yang berbeda. Namun, ketika saya mencoba Google untuk mengetahui arti setiap bendera, saya terutama mendapatkan hasil ke situs Perl generik dan tidak ada informasi khusus mengenai bendera atau penggunaannya ditemukan di sana.
Di bawah ini adalah bendera yang paling sering saya temui, dan saya tidak tahu apa artinya:
- perl -pe
- perl -pi
- perl -p
- perl -w
- perl -d
- perl -i
- perl -t
Saya akan sangat berterima kasih jika Anda memberi tahu saya apa arti masing-masing dari itu dan beberapa kasus penggunaan untuk mereka, atau setidaknya memberi tahu saya cara untuk mencari tahu artinya.
perl
command-line
flags
Tudor Constantin
sumber
sumber
perldoc perlrun
memiliki daftar semua opsi baris perintah yang diterima Perl.Jawaban:
Ya, Google terkenal sulit untuk mencari tanda baca dan, sayangnya, Perl tidak tampaknya sebagian besar terdiri dari tanda baca :-)
Semua saklar baris perintah diperinci dalam perlrun . (tersedia dari baris perintah dengan menelepon
perldoc perlrun
)Masuk ke opsi secara singkat, satu per satu:
sumber
perldoc perlrun
. Saya telah menghapus jawaban saya. :-)-w
pada umumnya harus dihindari, sebenarnya, karena ini mengaktifkan peringatan untuk semua kode, termasuk modul CPAN yang tidak ditulis dengan peringatan dalam pikiran. Hasilnya umumnya cukup berisik, dan juga sangat tidak berguna.-w
umumnya dihindari, tetapi harus diganti denganuse warnings
kode Anda sendiri.use warnings
dengan kode saya sendiri, tetapi -w memang berguna - ini membantu menyingkirkan modul CPAN yang ditulis dengan buruk. :-)-i
mengambil ekstensi untuk cadangan.-e
mengambil perintah perl. Jika-0ep
Anda memberi tahu perl bahwa 'p' adalah perintah perl, bukan argumen. Itu tidak akan berhasil sama sekali.The
-p
bendera pada dasarnya menjalankan script dengan-e
memungkinkan Anda meneruskan skrip keSTDIN
-i
mengarahkan penerjemah bahwa semua data yang diteruskanSTDIN
oleh skrip pelaksana harus dilakukan di tempat.-w
samause warnings;
, tetapi dalam lingkup global daripada lokal-d
menjalankan debugger Perlsumber
-w
tidak persis sama denganuse warnings
, yang terakhir dicakup ke file lokalYang lain menyebutkan perlrun. Jika Anda menggunakan B :: Deparse, Anda dapat melihat artinya (untuk banyak hal):
1 diwakili oleh '???', karena ini dioptimalkan.
-Aku menetapkan $ ^ Aku, suka
Tapi ingat, <ARGV> menggunakan 2-argumen terbuka, jadi jangan memiliki nama file yang diawali dengan
> <
atau diawali / diakhiri dengan|
.sumber
Ada juga satu flag penting
-n
yang tidak disebutkan dalam daftar.-n
berfungsi sama seperti-p
, hanya saja tidak mencetak$_
secara default. Ini bisa sangat berguna dalam memfilter file teks.Dengan cara ini Perl dapat menggantikannya
grep | sed
dalam satu baris tunggal.Sebagai contoh:
perl -ne 'print "$1\n" if /Messages read: (\d+)/' <my_input.txt
Akan mencetak setiap nilai integer yang ditemukan setelah "Pesan dibaca:", dan tidak lebih.
sumber
print $1
tidak sama denganprint
(print $_
).echo abc | perl -nw -e "print if (1)"
akan mencetakabc
. Tidak perlu$1
referensi.