Mô-đun thực dụng có phạm vi từ vựng, không động.
Phiên bản pragma kích hoạt một số tính năng nhất định trong phạm vi hiện tại, tùy thuộc vào phiên bản. Nó không kích hoạt các tính năng này trên toàn cầu. Điều này rất quan trọng cho khả năng tương thích ngược.
Điều này có nghĩa rằng một pragma thể được kích hoạt bên ngoài của định nghĩa module, nhưng bên trong phạm vi của chúng tôi:
# this is package main
use 5.012; # activates `say`
package Foo;
say "Hi"; # works, because lexical scope
Đây là khác biệt so với hàng nhập khẩu thông thường được nhập khẩu vào gói hiện tại (= phạm vi!).
Pragma warnings
kích hoạt cảnh báo bên trong phạm vi hiện tại.
Tuy nhiên, mọi tệp phải chứa use strict
, vì phạm vi từ vựng không bao giờ trải dài trên các tệp. Pragmas không bắc cầu:
Foo.pm:
say "Hi";
1;
main.pl:
use 5.012;
require Foo;
thất bại.
đâu chính xác bạn đặt những pragmas là như vậy, phần lớn là không thích hợp. Tôi khuyên bạn nên đặt các pragmas trước package
khi bạn có nhiều không gian tên trong tệp, ví dụ:
use 5.012; use warnings;
package Foo;
...;
package Bar;
...;
1;
trước tiên, nhưng để đặt package
đầu tiên nếu đó là tệp duy nhất trong tệp.
package Foo;
use 5.012; use warnings;
...;
1;
Điều quan trọng duy nhất là bạn làm use
họ ;-)
Có thể cho một module để sử dụng [ 'strict'] (http://perldoc.perl.org/strict.html "perldoc strict") và ['warnings'] (http://perldoc.perl.org/warnings.html" cảnh báo perldoc ") thay cho bạn. 'ví dụ gói; Sử dụng nghiêm ngặt; nhập khẩu phụ {strict-> import} 'Ví dụ: [Hiện đại :: Perl] (http://p3rl.org/Modern::Perl" perldoc Modern :: Perl ") –