In generale, quando si lavora con più file e si importano variabili o subroutine tra di essi, si scoprirà che la richiesta di file finisce per complicarsi man mano che il progetto cresce. Ciò è dovuto a tutto ciò che condivide uno spazio dei nomi comune, ma con alcune variabili dichiarate in alcuni file ma non in altri.
Il solito modo in cui questo viene risolto in Perl è creare moduli e quindi importarli da tali moduli. In questo caso:
#!/usr/bin/perl
package My::Module; # saved as My/Module.pm
use strict;
use warnings;
use Exporter;
our @ISA = 'Exporter';
our @EXPORT = qw(@a @b);
our (@a, @b);
@a = 1..3;
@b = "a".."c";
e quindi di utilizzare il modulo:
#!/usr/bin/perl
use strict;
use warnings;
use My::Module; # imports/declares the two variables
print @a;
print @b;
Tale use
linea significa in realtà:
BEGIN {
require "My/Module.pm";
My::Module->import();
}
Procedimento import
proviene Exporter
. Quando viene chiamato, esporta le variabili nell'array @EXPORT
nel codice chiamante.
Guardando la documentazione per Exporter e perlmod dovrebbe darvi un punto di partenza.
fonte
2010-12-28 17:58:04
Grazie .... mi sono perso per dichiarare la stessa variabile nel secondo.pl. Inizialmente, quando non è stato dichiarato, dice, la variabile "@a" non viene importata a ..... Sta funzionando ora ... – Cthar