2016-07-02 47 views
13

Ho l'abitudine di iniziare ogni dei miei script conC'è una differenza tra "usa avvisi"; e "usa avvertimenti" tutti ";"?

use strict; 
use warnings; 

Ma alcuni dei compagni di alta rep qui consiglia

use warnings 'all'; 

Se li ho capito bene, il secondo è ancora meglio rispetto al primo Così ho letto attraverso la docs e ho trovato

Tutti gli avvisi sono abilitati in un blocco da uno di questi:

use warnings; 
use warnings 'all'; 

Anche il Camel Book dice nulla di diverso:

use warnings; # same as importing "all" 

Quindi

  • è c'è una differenza, o
  • è solo più a prova di futuro (nel caso in cui le future versioni di Perl emettere segnalazioni che non sono a conoscenza di questo momento e use warnings; non prenderà), o
  • è solo un'altra abitudine, come ad es. ps -ef vs. ps aux? Alcune persone usano questo mentre altri preferiscono l'altro.

risposta

14

Attualmente,

use warnings; 

è equivalente a

use warnings 'all'; 

Tuttavia, non v'è stata talk on perl5porters di cambiarlo a significare

use warnings 'default'; 

nuove avvertenze "meno critici" sarebbe aggiunto alla categoria "tutti" ma non mostrato per impostazione predefinita. Dal momento che sembra che questo cambiamento sia preso seriamente in considerazione, è più sicuro allo use warnings 'all'; in modo esplicito.

precedenti discussioni su P5P:

RFC: Support for new warning categories outside of "all"

I've added support for new warning categories outside of "all" to blead

+0

Il link che hai dato è stato il punto cruciale. Quindi per uso privato sarò il _Charley_ guy (dalla [discussione che hai citato] (http://www.nntp.perl.org/group/perl.perl5.porters/2015/06/msg228467.html)) e 'usa gli avvisi 'all'; 'che daranno nuovi e sconosciuti avvertimenti in futuro mentre per uso ufficio farò come _Tallulah_ e manterrà' use warnings; 'e sarà più prudente. – PerlDuck

+3

Re "* è più sicuro usare' warnings 'all'; 'esplicitamente *, Soprattutto per i programmatori Perl meno esperti, in quanto questi trarranno il massimo beneficio dagli avvertimenti più stringenti.Ecco perché sto promuovendo' use warnings 'all ';' su SO. [Mi oppongo al cambiamento perché non è realistico aspettarsi che i programmatori Perl di minor esperienza sappiano usare 'use warnings' all '; 'invece di usare' warnings;' data l'estensione della documentazione che suggerisce il secondo. È anche un cambiamento incompatibile con le versioni precedenti a quelli che sono stati promessi "usa avvertenze;" attiva tutti gli avvisi.] – ikegami

+0

Volevo solo fare la stessa domanda! E mentre la risposta è ottima, spero che tale cambiamento ** non sarà mai accaduto **. Di tanto in tanto odio alcuni porters perl. – jm666

2

Uno è più esplicito dell'altro, ma come indicato nella documentazione, hanno lo stesso effetto. Probabilmente è meglio usare l'elenco di importazione 'all' per rendere più chiaro che tutti gli avvisi sono effettivamente abilitati. Questo è utile anche per coloro che potrebbero essere nuovi in ​​Perl. In caso di dubbio, l'esplicito è solitamente migliore di implicito.