I moduli pragmatici hanno un ambito lessicale non dinamico.
La versione di pragma attiva alcune funzioni nell'ambito corrente, a seconda della versione. Non attiva queste funzionalità a livello globale. Questo è importante per la retrocompatibilità.
Ciò significa che una pragma può essere attivato al di fuori della definizione di modulo, ma all'interno della nostra portata:
# this is package main
use 5.012; # activates `say`
package Foo;
say "Hi"; # works, because lexical scope
Questo è diverso da importazioni normali importati nel package corrente (= portata!).
Il pragma warnings
attiva gli avvisi all'interno dell'ambito corrente.
Tuttavia, ogni file deve contenere lo use strict
, in quanto lo scope lessicale non si estende mai sui file. Pragma non sono transitiva:
Foo.pm:
say "Hi";
1;
main.pl:
use 5.012;
require Foo;
fallisce.
Dove esattamente si mettono questi pragma è quindi in gran parte irrilevante. Ti consigliamo di inserire il pragma prima dello package
quando nel file sono presenti più spazi dei nomi, ad es.
use 5.012; use warnings;
package Foo;
...;
package Bar;
...;
1;
ma per mettere la prima package
se è l'unico nel file.
package Foo;
use 5.012; use warnings;
...;
1;
L'unica cosa importante è che si fa use
li ;-)
E 'possibile per un modulo da usare [ 'strict'] (http://perldoc.perl.org/strict.html "perldoc strict") e ['warnings'] (http://perldoc.perl.org/warnings.html" perldoc warnings ") per tuo conto. 'esempio di pacchetto; usare rigorosamente; sub import {strict-> import} 'Esempio: [Modern :: Perl] (http://p3rl.org/Modern::Perl" perldoc Modern :: Perl ") –