Mục lục:
- Có thể là thông báo lỗi phổ biến nhất mà bạn thấy khi lập trình trong Perl trông giống như sau:
- Các loại thông báo lỗi sau có thể cực kỳ bực bội nếu bạn không biết giải pháp khắc phục nhanh:
- Khi bạn có nhiều nút mở và đóng trong một chương trình, thật dễ dàng để trượt một cái ngoặc đơn. Nếu đó là trường hợp, bạn có thể thấy một tin nhắn từ Perl rằng đọc một cái gì đó như thế này:
Video: Trump phẫn nộ vì FBI lục soát văn phòng luật sư riêng 2025
Nhập một lỗi đánh máy hoặc hai lần trong quá trình viết chương trình Perl là không phổ biến. Nhưng khi bạn cố gắng để chạy một chương trình có chứa một slip-up nhập văn bản, Perl thường trở nên bối rối và nói với bạn như vậy bằng cách báo cáo một lỗi. Phản ứng tự nhiên đối với hầu hết mọi người, ngay cả những người có nhiều năm kinh nghiệm lập trình, là lo lắng hoặc tức giận hoặc cả hai khi một thông báo lỗi xuất hiện.
Đừng hoảng sợ. Hít một hơi thật sâu. Hít thở sâu, chậm. Nghiêm túc, bạn không thể có được gốc rễ của vấn đề nếu bạn là tất cả căng thẳng và bận tâm. Cho dù bạn lập trình bao nhiêu năm, bạn luôn phải tìm ra một số lỗi trong mã bạn đã viết.
Vì vậy, bây giờ bạn đang (hy vọng) một chút calmer, bạn có thể bắt đầu đánh giá cao thực tế là Perl có các thông báo lỗi hữu ích hơn hầu hết các ngôn ngữ lập trình khác. Các thông điệp không phải lúc nào cũng đúng với số tiền, nhưng chúng có thể khiến bạn khá gần với vị trí mà vấn đề nằm ở việc tìm kiếm từ phía bạn.
Perl có vô số các thông báo lỗi, nhưng một vài chắc chắn cành cây nhiều hơn những người khác do một số lỗi chính tả mà mọi người dường như thực hiện. Các lỗi sau đây là kết quả của các đoạn mã mục nhập nhỏ mà bạn có thể dễ dàng tránh.
Có thể là thông báo lỗi phổ biến nhất mà bạn thấy khi lập trình trong Perl trông giống như sau:
# lỗi cú pháp, gần "mở"
File 'counter1. pl '; Dòng 10
# Thi hành bị hủy do lỗi biên dịch.
Bạn có thể nhìn và nhìn vào Dòng 10, dòng có câu lệnh mở, và bạn sẽ không thấy có gì sai với nó. Thủ thuật ở đây là kiểm tra câu lệnh có
trước câu lệnh mở và xem nó có chấm dứt bằng dấu chấm phẩy hay không. (Perl biết rằng một tuyên bố chỉ kết thúc khi nó gặp một dấu chấm phẩy) Trong trường hợp này, lỗi là do một dấu chấm phẩy bị thiếu ở cuối dòng 7 của chương trình:
Quên một dấu ngoặc kép
Các loại thông báo lỗi sau có thể cực kỳ bực bội nếu bạn không biết giải pháp khắc phục nhanh:
# Bare word found where operator expected, near
#" mở (INFILE, $ TheFile) hoặc chết "The"
# bắt đầu từ
# dòng 7)
File 'counter1. pl '; Dòng 10
Lỗi này tương tự như việc quên một dấu chấm phẩy; thay vào đó, đó là một dấu ngoặc kép đã vô tình bỏ qua:
$ TheFile = "sample. txt;
Trong trường hợp này, Perl đã làm tốt công việc đoán sai là gì, cho thấy rằng một dòng "runaway multi-line" trên dòng 7 là vấn đề, đúng là đúng.
Nhập một dấu ngoặc đơn quá hoặc quá
Khi bạn có nhiều nút mở và đóng trong một chương trình, thật dễ dàng để trượt một cái ngoặc đơn. Nếu đó là trường hợp, bạn có thể thấy một tin nhắn từ Perl rằng đọc một cái gì đó như thế này:
# cú pháp lỗi, gần ") eq"
File 'counter1. pl '; Dòng 38
lỗi cú pháp, gần "}"
File 'counter1. pl '; Dòng 42
Ở đây, Perl không thể xác định nơi mà lỗi là chính xác, nhưng nó thực sự có nó ngay trên đoán đầu tiên: Dòng 38 chứa dấu ngoặc đơn bên phải:
if (substr ($ TheLine, $ CharPos, 1)) eq ")
Có một ngoặc đơn quá ít trong một chương trình Perl có thể gây khó khăn cho việc tìm kiếm các vấn đề:
# Không thể sử dụng các item liên tục như trái arg của implicit->, # gần "1}"
File 'counter1. pl '; Dòng 39
# Scalar được tìm thấy nơi nhà điều hành mong đợi, gần "$ CharPos"
File 'counter1. pl '; Dòng 40
# (Thiếu dấu chấm phẩy ở dòng trước?)
# lỗi cú pháp, gần "$ CharPos"
File 'counter1. pl '; Dòng 40
Yarp! Tất cả điều này đã được tạo ra bởi vì dấu ngoặc cuối cùng trên dòng 38 bị mất:
if (substr ($ TheLine, $ CharPos, 1) eq ""
Đây là một bài học tốt khác để săn tìm lỗi gõ: Bắt đầu ở đâu Perl nói Nếu bạn không tìm thấy lỗi ở đó, hãy đi lên một hoặc hai dòng và xem vấn đề đã bắt đầu từ trước đó.
Lời khuyên cuối cùng: Trust Perl để tìm lỗi chính tả đơn giản cho bạn (nơi nó có thể), và nhớ rằng nó mang lại cho bạn tất cả sự giúp đỡ nó có thể, mà là nhiều hơn bạn có thể nói cho nhiều ngôn ngữ lập trình.