2014-04-25 4 views

risposta

12

Il pragma di avvertimenti è una sostituzione per il flag della riga di comando -w, ma il pragma è limitato al blocco che lo contiene, mentre il flag è globale. Vedere perllexwarn per ulteriori informazioni e l'elenco delle categorie di avvertenza incorporate.

- warnings documentation

Il vantaggio di use warnings è che può essere spento, e riguarda solo l'ambito immediato.

Si consideri ad esempio un modulo che utilizza le operazioni che sarebbero emettere avvertimenti:

package Idiotic; 
sub stuff { 
    1 + undef; 
} 

allora otteniamo un avviso se facciamo

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

Idiotic::stuff(); 

ma non otteniamo alcun avviso con

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

Idiotic::stuff(); 
7

Sì, c'è una differenza, da warnings:

Il warnings è un sostituto per la riga di comando di bandiera -w, ma il pragma è limitato al blocco che lo contiene, mentre il flag è globale.

-w consentirà avvisi in codice incluso (via use, etc.), e che non può essere desiderabile.