Isi kandungan:
- Lupa huruf semikolon
- Melupakan tanda petikan
- Memasuki satu kurungan terlalu banyak atau terlalu sedikit
Video: Words at War: Combined Operations / They Call It Pacific / The Last Days of Sevastopol 2025
Memasuki kesipo atau dua ketika menulis program Perl tidak biasa. Tetapi apabila anda cuba menjalankan program yang mengandungi slip kemasukan teks, Perl biasanya menjadi keliru dan memberitahu anda dengan demikian melaporkan ralat. Reaksi semulajadi untuk kebanyakan orang, walaupun mereka yang mempunyai pengalaman pengaturcaraan bertahun-tahun, adalah untuk merasa bimbang atau marah atau keduanya apabila mesej ralat muncul.
Jangan panik. Ambillah nafas panjang. Ambil satu lagi nafas yang perlahan. Serius, anda tidak boleh mendapatkan akar masalah jika anda semua tegang dan terganggu. Tidak kira berapa tahun program anda, anda selalu mencari beberapa kesilapan dalam kod yang anda tulis.
Jadi, sekarang bahawa anda (mudah-mudahan!) Sedikit lebih tenang, anda boleh mula menghargai fakta bahawa Perl mempunyai mesej ralat yang lebih berguna daripada hampir semua bahasa pengaturcaraan lain. Mesej-mesej itu tidak selalu tepat pada wang, tetapi mereka boleh membuat anda cukup dekat dengan tempat di mana masalahnya terletak dengan pencarian yang minima di pihak anda.
Perl mempunyai banyak mesej ralat, tetapi beberapa yang pasti menghasilkan lebih banyak daripada yang lain kerana beberapa kesilapan biasa yang semua orang nampak. Kesilapan berikut adalah hasil daripada kiriman teks masuk kecil yang anda boleh dengan mudah dielakkan.
Lupa huruf semikolon
Mungkin mesej ralat paling biasa yang anda lihat apabila pengaturcaraan dalam Perl kelihatan seperti ini:
# kesalahan sintaks, berhampiran "terbuka"
Fail 'counter1. pl '; Talian 10
# Pelaksanaan digugurkan kerana ralat kompilasi.
Anda boleh melihat dan melihat Line 10, yang mempunyai pernyataan terbuka, dan anda tidak akan melihat apa-apa yang salah dengannya. Silap mata di sini adalah untuk memeriksa kenyataan yang datang sebelum pernyataan terbuka dan melihat sama ada ia berakhir dengan titik koma. (Perl tahu bahawa pernyataan berakhir hanya apabila ia menemui tanda titik koma.) Dalam kes ini, ralat disebabkan oleh titik koma yang hilang pada akhir Talian 7 program:
$ TheFile = "sampel.
Melupakan tanda petikan
Mesej ralat berikut boleh menjadi sangat mengecewakan jika anda tidak tahu tentang penyelesaian yang pantas:
# Kata yang ditemui di mana operator dijangka, berhampiran
# " buka (INFILE, $ TheFile) atau mati "The"
# (Boleh menjadi rentetan berbilang baris "bermula pada
# line 7)
Fail 'counter1. pl '; Baris 10
Kesilapan ini sama dengan melupakan titik koma bertitik; sebaliknya, itu tanda petikan yang tidak sengaja ditinggalkan:
$ TheFile = "sampel. txt;
Dalam hal ini, Perl melakukan tugas yang baik untuk meneka apa yang salah, menunjukkan bahawa string multi-line yang melarikan diri pada Jalur 7 adalah masalah, yang tepat.
Memasuki satu kurungan terlalu banyak atau terlalu sedikit
Apabila anda mempunyai banyak membuka dan menutup tanda kurung dalam suatu program, mudah untuk menyelinap secara tambahan secara tidak sengaja. Jika itu berlaku, anda mungkin melihat mesej dari Perl yang berbunyi seperti ini:
# kesalahan sintaks, berhampiran ") eq"
Fail 'counter1. pl '; Baris 38
# ralat sintaks, berhampiran "}"
Fail 'counter1. pl '; Line 42
Di sini, Perl tidak dapat menentukan di mana kesilapan itu betul-betul, tetapi ia benar-benar mendapat penanda yang tepat: Talian 38 mengandungi kurungan kanan tambahan:
if (substr ($ TheLine, $ CharPos, 1)) eq "")
Mempunyai satu kurungan terlalu sedikit dalam program Perl boleh menyebabkan masalah yang lebih sukar:
# Tidak dapat menggunakan item yang tetap sebagai argumen kiri tersirat ->,
# berhampiran "1}"
Fail 'counter1. pl '; Baris 39
# Skalar dijumpai di mana operator dijangka, berhampiran "$ CharPos"
Fail 'counter1. pl '; Baris 40
# (Tanda titik tidak hilang pada baris sebelumnya?)
# ralat sintaks, berhampiran "$ CharPos"
Fail 'counter1. pl '; Talian 40
Yarp! Semua ini dihasilkan kerana kurungan terakhir pada Baris 38 hilang:
jika (substr ($ TheLine, $ CharPos, 1) eq ""
Berikut adalah satu lagi pelajaran yang baik dalam memburu kesilapan menaip: ia mendapati ralat.Jika anda tidak menemui ralat di sana, naik satu atau dua baris dan lihat jika masalah bermula lebih awal.
Kata kunci nasihat akhir: Percayakan Perl untuk mencari kesilapan mudah untuk anda (di mana ia boleh), dan ingat bahawa ia memberi anda semua bantuan yang boleh, yang lebih daripada yang anda katakan untuk banyak bahasa pengaturcaraan.
