2009-12-08 16 views
9

Ho uno script Perl che sta diventando grande, quindi voglio suddividerlo in più script. cioè, voglio prendere alcune grandi dichiarazioni di hash e metterle in un altro file. Come posso ottenere che lo script originale sia in grado di vedere e utilizzare le variabili che vengono ora dichiarate nell'altro script?Come posso ottenere uno script Perl per vedere le variabili in un altro script Perl?

Questo mi sta guidando i dadi, perché non ho usato Perl in un po 'e per la vita di me non riesco a capire questo fuori

risposta

15

utilizzare un modulo:

package Literature; 

our %Sidekick = (
    Batman => "Robin", 
    Bert => "Ernie", 
    Don => "Sancho", 
); 

1; 

Ad esempio:

#! /usr/bin/perl 

use Literature; 

foreach my $name (keys %Literature::Sidekick) { 
    print "$name => $Literature::Sidekick{$name}\n"; 
} 

uscita:

$ ./prog 
Bert => Ernie 
Batman => Robin 
Don => Sancho 
+5

Direi che Bert era il compagno di Ernie, ma per il resto un buon esempio. –

+4

Con un po 'di magia da Esportatore potremmo anche usare' Letteratura qw (Sidekicks); 'e non usare il nome completo del pacchetto. Sarebbe rendere il pacchetto più complesso, ma ne varrà la pena alla fine. –

+0

Non dimenticare l'1! È importante! So che lo hai gbacon, ma è uno che morde le persone. –

10

Si utilizza modules. O modulinos.

Farlo un modulo che esporta (facoltativamente!) Alcune variabili o funzioni. Scopri come utilizzare il modulo Exporter.

+0

l'ho visto ma potrei giurare che c'era un modo più semplice. Potrei andare fuori di testa alla fine di una lunga giornata ... – John

+8

@john: sì, ci sono altri modi, ma violano le Best Practices e quindi non devono essere divulgati qui. – Ether

+0

È il modo più gestibile e il modo migliore a lungo termine. Se devi, puoi usare la funzione 'do' per eseguire un altro script Perl, in modo da poter inserire tutte le dichiarazioni delle variabili in" myvars.pl "e poi" fare "myvars.pl" ', ma se lo fai, sta arrivando al punto in cui dovresti usare un modulo. –

4

In aggiunta agli altri "Utilizza un modulo di" suggerimenti, se si prevede riutilizzando molto il modulo, vorrai installarlo nella libreria del tuo sito (solitamente sotto ...(perl install folder)...\site\lib.

In caso contrario (riutilizzabilità forse, ha limitato al di fuori dello script), si può conservare nella directory con lo script e importarlo in questo modo:

use lib './lib'; # where ./lib is replaced with wherever the module actually is. 
use MyModule; 
5

Ancora un altro suggerimento di utilizzare un modulo.

I moduli non sono difficili da scrivere o utilizzare. Sembrano difficili finché non ne scrivi uno. Dopo la prima volta, sarà facile. Molte, molte cose positive derivano dall'uso dei moduli: incapsulamento, facilità di test e facile riutilizzo del codice per citarne alcuni.

Vedere my answer to a similar question per un modulo di esempio, con funzioni esportate.

Inoltre, some very smart people nei moduli della comunità Perl così tanto che they advocate writing apps as modules - they call them modulinos. La tecnica funziona bene.

Quindi, in conclusione, prova a scrivere un modulo oggi!

Problemi correlati