2013-10-05 19 views
6

mi sono confuso con qualcosa durante l'importazione di un modulo, come:di Perl elenca

use POSIX; 

&

use POSIX(); 

&

use POSIX qw(WNOHANG); 

Qual è la differenza tra questi use?

risposta

13

La maggior parte dei moduli utilizza il modulo Exporter per esporre funzioni/variabili/costanti nello spazio dei nomi del callee.

use POSIX; 

Questo sarà solo importare tutti i simboli da POSIX di @EXPORT nel namespace del modulo di chiamata.

use POSIX(); 

Questo non importare alcun simbolo nel namespace chiamata. Ha, tuttavia caricare il modulo, il che significa che è possibile richiamare le funzioni come POSIX::strftime(...), ecc

use POSIX(WNOHANG) 

Questo importerà solo il simbolo WNOHANG al namespace del modulo di chiamata.

Se non si ha familiarità con gli array @EXPORT e @EXPORT_OK, si consiglia di consultare la documentazione di Exporter. L'utilizzo di Exporter è il metodo standard in Perl per esportare i simboli da un modulo nello spazio dei nomi del modulo (lo spazio dei nomi chiamante). POSIX lo usa pure.

Probabilmente vale anche la pena ricordare che i moduli progettati con un'interfaccia orientata agli oggetti, in genere non richiedono l'importazione di simboli.