Perl 6 Tài liệu thuần tuý (có thể là tài liệu mới lạ) có một số tính năng cho phép nó xây dựng tài liệu cho những gì nó thấy và tài liệu hiển thị trong biến số $=pod
khi chạy.Các chương trình Perl 6 có phải biên dịch để đọc tài liệu nhúng không?
Tuy nhiên, tôi đã rất ngạc nhiên khi tôi không đọc được tài liệu khi tôi mắc lỗi trong văn bản chương trình. Ở đây tôi đã rời ra một tách tuyên bố giữa hai câu lệnh:
use v6;
BEGIN { put "BEGIN" }
INIT { put "INIT" }
CHECK { put "CHECK" }
"foo" "bar";
DOC INIT { put "DOC INIT" }
DOC BEGIN { put "DOC BEGIN" }
DOC CHECK { put "DOC CHECK" }
=begin pod
=head1 This is a title
This is a bit of pod
=end pod
Khi tôi chạy nó với --doc
switch, các vấn đề cú pháp chương trình (và BEGIN
chạy):
$ perl6 --doc doc.p6
BEGIN
===SORRY!=== Error while compiling ...
Two terms in a row
------> "foo"⏏ "bar";
expecting any of:
infix
infix stopper
statement end
statement modifier
statement modifier loop
Khi tôi sửa chữa nó , Tôi nhận được một số cảnh báo (vì vậy, perl6 đang biên dịch) và các trình biên dịch thời gian chạy phasers:
BEGIN
DOC BEGIN
DOC CHECK
CHECK
WARNINGS for /Users/brian/Desktop/doc.p6:
Useless use of constant string "bar" in sink context (line 9)
Useless use of constant string "foo" in sink context (line 9)
INIT
DOC INIT
This is a title
This is a bit of pod
Chúng tôi đã biết điều này có một chút nguy hiểm trong Perl 5. A perl -c
và khối BEGIN
có thể chạy mã. Xem How to check if a Perl script doesn't have any compilation errors?. Tôi không nghĩ điều này nguy hiểm hơn những gì chúng ta đã biết, nhưng bây giờ nó xảy ra vào thời điểm tôi không yêu cầu một cách rõ ràng để yêu cầu một cái gì đó để biên dịch các câu lệnh của chương trình.
Tôi chưa nghiên cứu chi tiết về Perl 6 pod và tại sao điều này có thể cần thiết bên ngoài khối khai báo và .WHY
(tính năng thú vị), nhưng dường như điều này có thể dẫn đến sự cố. Có lẽ một chương trình bên ngoài có thể trích xuất Pod? Hoặc một cách để làm mà không có người khai báo trừ khi chương trình sẽ chạy?
Tôi không đưa ra yêu cầu tính năng. Tôi chỉ giải thích những gì tồn tại. –