2014-04-25 13 views
5

Tôi đọc trên diễn đàn (http://forums.devshed.com/perl-programming-6/email-send-attach-950337.html *) rằng tốt hơn là 'sử dụng cảnh báo'; thay vì nói '-w'. Điều này có đúng không? Tôi nghĩ rằng '-w' chỉ là viết tắt của 'sử dụng cảnh báo'; điều đó có đúng không?'sử dụng cảnh báo' so với '#!/Usr/bin/perl -w' Có sự khác biệt nào không?

* Một vài mục xuống, theo người sử dụng gọi là 'Fishmonger

Trả lời

12

pragma cảnh báo là thay thế cho cờ dòng lệnh -w, nhưng pragma được giới hạn trong khối bao quanh, trong khi cờ là toàn cục. Xem perllexwarn để biết thêm thông tin và danh sách các danh mục cảnh báo được cài sẵn.

- warnings documentation

Ưu điểm của use warnings là nó có thể được tắt, và chỉ ảnh hưởng đến phạm vi trước mắt.

Hãy xem xét ví dụ một module có sử dụng hoạt động mà sẽ phát ra cảnh báo:

package Idiotic; 
sub stuff { 
    1 + undef; 
} 

Sau đó chúng tôi nhận được một cảnh báo nếu chúng tôi làm

#!perl -w 
use Idiotic; # oops, -w is global 

Idiotic::stuff(); 

nhưng không nhận được bất kỳ cảnh báo với

#!perl 
use warnings; # pragmas are scoped, yay! 
use Idiotic; 

Idiotic::stuff(); 
7

Vâng, có một sự khác biệt, từ warnings:

Những cảnh báo pragma là một thay thế cho các dòng lệnh cờ -w, nhưng pragma được giới hạn trong khối kèm theo, trong khi cờ là toàn cầu.

-w sẽ bật cảnh báo trong mã được bao gồm (qua use, v.v ...) và điều đó có thể không được mong muốn.

Các vấn đề liên quan