Ini adalah command splain yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
diagnostik, splain - menghasilkan diagnostik peringatan verbose
RINGKASAN
Menggunakan pragma "diagnostik":
menggunakan diagnostik;
gunakan diagnostik -verbose;
mengaktifkan diagnostik;
menonaktifkan diagnostik;
Menggunakan program filter mandiri "splain":
program perl 2>diag.out
bentangkan [-v] [-p] diag.out
Menggunakan diagnostik untuk mendapatkan pelacakan tumpukan dari skrip yang berperilaku tidak semestinya:
perl -Mdiagnostics=-traceonly my_script.pl
DESKRIPSI
The "diagnostik" Pragma
Modul ini memperluas diagnostik singkat yang biasanya dipancarkan oleh kompiler Perl dan
penerjemah Perl (dari menjalankan Perl dengan sakelar -w atau "gunakan peringatan"), augmenting
mereka dengan deskripsi yang lebih jelas dan menawan yang ditemukan di perldiag. Seperti
pragmata lainnya, ini memengaruhi fase kompilasi program Anda daripada hanya
fase eksekusi.
Untuk digunakan dalam program Anda sebagai pragma, cukup panggil
menggunakan diagnostik;
di awal (atau di dekat awal) program Anda. (Perhatikan bahwa ini tidak aktifkan perl's -w
flag.) Seluruh kompilasi Anda kemudian akan tunduk pada diagnostik yang ditingkatkan.
Ini masih keluar STDERR.
Karena interaksi antara masalah runtime dan waktu kompilasi, dan karena itu mungkin
bukan ide yang sangat bagus, Anda tidak boleh menggunakan "tidak ada diagnostik" untuk mematikannya di
waktu kompilasi. Namun, Anda dapat mengontrol perilaku mereka saat runtime menggunakan cacat() dan
memungkinkan() metode untuk mematikan dan menghidupkannya masing-masing.
The -verbose flag pertama mencetak pengantar perldiag sebelum diagnostik lainnya.
Variabel $diagnostics::PRETTY dapat menghasilkan urutan escape yang lebih baik untuk pager.
Peringatan dikirim dari Perl itu sendiri (atau lebih tepatnya, yang cocok dengan deskripsi
ditemukan di perldiag) hanya ditampilkan sekali (tidak ada deskripsi duplikat). Kode pengguna
peringatan yang dihasilkan a la memperingatkan() tidak terpengaruh, memungkinkan duplikat pesan pengguna menjadi
ditampilkan.
Modul ini juga menambahkan jejak tumpukan ke pesan kesalahan saat Perl mati. Ini berguna
untuk menentukan apa yang menyebabkan kematian. NS - hanya jejak (atau hanya -t) bendera mematikan
penjelasan pesan peringatan yang hanya menyisakan jejak tumpukan. Jadi jika skrip Anda adalah
mati, jalankan lagi dengan
perl -Mdiagnostics=-traceonly my_bad_script
untuk melihat tumpukan panggilan pada saat kematian. Dengan menyediakan -peringatan (atau hanya -w)
bendera, peringatan apa pun yang dipancarkan juga akan disertai dengan jejak tumpukan.
The terkelupas program
Meskipun tampaknya program nuther utuh, terkelupas sebenarnya tidak lebih dari tautan ke
yang (dapat dieksekusi) diagnostik.pm modul, serta tautan ke diagnostik.pod
dokumentasi. NS -v flag seperti arahan "gunakan diagnostik -verbose". NS -p bendera
seperti variabel $diagnostics::CUKUP. Karena Anda pasca-pemrosesan dengan terkelupas,
tidak ada gunanya untuk bisa memungkinkan() or cacat() pengolahan.
Keluaran dari terkelupas diarahkan ke STDOUT, tidak seperti pragma.
CONTOH
File berikut pasti akan memicu beberapa kesalahan pada waktu proses dan waktu kompilasi:
menggunakan diagnostik;
print NOWHERE "tidak ada\n";
print STDERR "\n\tPesan ini harus tanpa hiasan.\n";
warning "\tIni adalah peringatan pengguna";
print "\nUJI DIAGNOSTIK: Silakan masukkan a di sini: ";
$a saya, $b = skalar ;
cetak "\n";
cetak $x/$y;
Jika Anda lebih suka menjalankan program Anda terlebih dahulu dan melihat masalahnya setelah itu, lakukan ini:
perl -w test.pl 2>test.out
./splain < test.out
Perhatikan bahwa ini pada umumnya tidak mungkin terjadi pada cangkang dengan warisan yang lebih meragukan, karena
teoretis
(perl -w test.pl >/dev/tty) >& test.out
./splain < test.out
Karena Anda baru saja memindahkan yang ada stdout ke tempat lain.
Jika Anda tidak ingin mengubah kode sumber Anda, tetapi masih memiliki peringatan langsung, lakukan ini:
eksekutif 3>&1; perl -w test.pl 2>&1 1>&3 3>&- | splain 1>&2 3>&-
Bagus, kan?
Jika Anda ingin mengontrol peringatan dengan cepat, lakukan sesuatu seperti ini. Pastikan Anda melakukan
"gunakan" terlebih dahulu, atau Anda tidak akan bisa mendapatkan memungkinkan() or cacat() metode.
menggunakan diagnostik; # memeriksa seluruh fase kompilasi
print "\nwaktu untuk diag palsu pertama: SQUAWKINGS\n";
cetak BOGUS1 'nada';
print "selesai dengan kepalsuan pertama\n";
menonaktifkan diagnostik; # hanya mematikan peringatan runtime
print "\nwaktu untuk penipuan ke-2: (dimatikan)\n";
cetak BOGUS2 'nada';
print "selesai dengan 2nd palsu\n";
mengaktifkan diagnostik; # mengaktifkan kembali peringatan runtime
print "\nwaktu untuk tipuan ke-3: SQUAWKINGS\n";
cetak BOGUS3 'nada';
print "selesai dengan 3 palsu\n";
menonaktifkan diagnostik;
print "\nwaktu untuk tipuan ke-4: (dimatikan)\n";
cetak BOGUS4 'nada';
print "selesai dengan 4 palsu\n";
INTERNAL
Pesan diagnostik berasal dari perldiag.pod file bila tersedia saat runtime.
Jika tidak, mereka dapat disematkan dalam file itu sendiri saat paket splain dibuat. Lihat
itu Makefile untuk rincian.
Jika pengendali $SIG{__WARN__} yang masih ada ditemukan, ia akan terus dihormati, tetapi
hanya setelah diagnostik::splainthis() fungsi ($SIG{__WARN__} modul
pencegat) telah sesuai dengan peringatan Anda.
Ada variabel $diagnostics::DEBUG yang dapat Anda atur jika Anda sangat ingin tahu apa
macam hal sedang dicegat.
MULAI { $diagnostics::DEBUG = 1 }
Gunakan splain online menggunakan layanan onworks.net
