Có thể lấy số dòng nguồn hiện tại trong Perl không? Tương đương trong C++ là __LINE__
.Làm cách nào để in số dòng nguồn trong Perl?
Trả lời
print "File: ", __FILE__, " Line: ", __LINE__, "\n";
hoặc
warn("foo");
cảnh báo sẽ in trên STDERR. – mat
Các __LINE__ đen được ghi chép lại trong phần Special Literals của perldata man page.
Lưu ý có một Gotcha với
perl -e'warn ("foo")'
foo tại dòng -e 1.
nếu nó kết thúc bằng một dòng mới nó sẽ không in dòng số
perl -e'warn ("foo \ n")'
foo
Đây là tài liệu trong "perldoc -f die", nhưng có lẽ dễ dàng bỏ lỡ trong phần "perldoc -f cảnh báo" tham chiếu đến phần ...
Điều này in ra dòng bạn đang ở đâu, và cũng "stack" (danh sách các dòng từ các chương trình gọi điện thoại (kịch bản/modules/etc) dẫn đến việc ngay từ bây giờ bạn)
while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }
"sử dụng cá chép" và chơi với các thói quen khác nhau và bạn cũng nhận được một ngăn xếp - không chắc chắn nếu cách này tốt hơn hoặc tệ hơn phương pháp "người gọi" được đề xuất bởi cnd. Tôi đã sử dụng các biến LINE và FILE (và có lẽ các biến tương tự khác) trong C và Perl để hiển thị nơi tôi có trong mã và thông tin khác khi gỡ lỗi nhưng đã thấy ít giá trị bên ngoài môi trường gỡ lỗi.
- 1. Làm cách nào để chỉ ghi một số dòng nhất định của một tệp trong Perl?
- 2. Làm cách nào để trích xuất các dòng giữa hai dòng phân cách trong Perl?
- 3. Perl: in trở lại đầu dòng
- 4. Làm thế nào để in dòng mã nguồn trong logger python
- 5. Làm cách nào để in dòng mới trong Haskell?
- 6. Làm cách nào để in gọn dòng mới trong Groovy?
- 7. Làm thế nào tôi có thể in chỉ một dòng mới unix trong Perl trên Win32?
- 8. Làm cách nào để nhập nhận xét nhiều dòng trong Perl?
- 9. Làm cách nào để in danh sách các số trên mỗi dòng trong clojure?
- 10. Làm cách nào để in các phần tử danh sách được phân tách bằng nguồn cấp dữ liệu dòng trong Perl?
- 11. Làm thế nào để viết những dòng này trong perl
- 12. Làm cách nào để in văn bản ngay lập tức mà không cần đợi dòng mới trong Perl?
- 13. Làm cách nào để in cùng một dòng?
- 14. Làm thế nào để in một mảng 2 chiều Perl?
- 15. Làm cách nào để chuyển đối số dòng lệnh vào chương trình Perl?
- 16. Làm thế nào in của Perl có thể thêm một dòng mới theo mặc định?
- 17. Làm thế nào để in ra dòng trong Javascript
- 18. Làm thế nào để mã hóa mã nguồn Perl?
- 19. Làm cách nào để kích hoạt số dòng trong VS2008?
- 20. Làm thế nào để tính toán số lượng dòng trong mã nguồn
- 21. Làm cách nào để đếm các ký tự trong Perl?
- 22. Làm cách nào để cập nhật hiển thị tiến trình trên ứng dụng dòng lệnh Perl?
- 23. Thiết lập Visual Studio 2005 để in số dòng
- 24. Làm cách nào để kết hợp các đối số dòng lệnh và tên tệp cho <> trong Perl?
- 25. Transpose in perl
- 26. Làm thế nào để sắp xếp các số trong Perl?
- 27. Làm cách nào để in đầu ra trong dòng mới trong PL/SQL?
- 28. Làm cách nào để xóa một tệp trong Perl?
- 29. Dừng in sau số n dòng
- 30. Làm cách nào để xóa tất cả khoảng trắng và dấu ngắt dòng trong Perl?
Tôi tự hỏi: tại sao bạn cần điều này? –
Tôi đã sử dụng nó để nhanh chóng theo dõi tiến trình thông qua một quá trình rất dài, và để kiểm tra thứ tự được thực hiện, như breakpoint nhưng không sử dụng trình gỡ lỗi –
@LeonTimmermans: Tôi đang trả lời nhận xét rất cũ của bạn về lý do tại sao một Perl lập trình viên có thể muốn _ _FILE_ _ và _ _ LINE _ _. Về cơ bản, cùng một lý do tại sao một lập trình viên C/C++ có thể muốn họ. Ví dụ. hôm nay tôi đã tái cấu trúc một bài kiểm tra để Bài kiểm tra :: Sự khác biệt :: eq_or_diff được gọi trong một chương trình con. Số dòng được báo cáo nằm trong chương trình con không phải là nơi mà chương trình con được gọi. Việc thêm __ LINE __ vào tên thử nghiệm sẽ giúp tôi tìm thấy bài kiểm tra không thành công. Bây giờ nếu tôi chỉ có thể viết một macro CODE_LOCATION trong Perl5. –