2012-11-15 11 views
6

Skrypty perla zawierają wszystkie nazwy modułów na początku skryptu.Jak dołączyć plik zawierający wszystkie wymagane nazwy modułów Perla?

Ex:

use strict; 
use XML::Parser; 
use XML::Simple; 
use DBI; 
use DBD::DB2::Constants; 
use POSIX qw(strftime); 
use Storable qw(dclone); 
use Data::Dumper; 
use Carp; 

Jak zachować wszystkie nazwy modułu w innym pliku i dołączyć plik w głównym skrypcie Perl?

Dzięki.

+0

Poprzednio: http://stackoverflow.com/questions/437785/is-there-a-way-to-use-a-single-file-that-in-turn-uses-multiple-others-in-perl http://stackoverflow.com/questions/4919625/perl-how-to-share-the-import-of-a-arge-list-of-modules-between-many-independen http://stackoverflow.com/questions/6412799/perl-how-to-make-use-mydefaults-with-modern-perl-utf8-defaults – daxim

Odpowiedz

6

Utwórz swój własny moduł. Jeśli jednak utworzysz pakiet w tym module, te pliki zostaną zaimportowane do innego obszaru nazw. Można zrobić litle siekać to zrobić smiple:

MyModules.pm:

use strict; 
use XML::Parser; 
use XML::Simple; 
use DBI; 
use DBD::DB2::Constants; 
use POSIX qw(strftime); 
use Storable qw(dclone); 
use Data::Dumper; 
use Carp; 

Uwaga nie było package kluczowe w tej .pm. Skrypt:

use MyModules; 

Place to .pm w tym samym katalogu ze skryptem lub dodawanie modułów ścieżkę przeszukiwania w czasie wykonywania:

use lib '/my_modules_dir/'; 
use MyModules; 

Zastosowanie zrobić i wymagają poleceń nie jest zalecane, ponieważ nie sprawdzaj składni przy uruchamianiu skryptu. Oczywiście można umieścić je w bloku BEGIN ale myślę, że jego trudną drogę i ogólnie BEGIN{ require ..} jest taka sama jak use

UPD: Ikegami zauważyć problem, gdy jej nie używasz to z wielu modułów pracujących. Bez względu na to, czy informacja o rozruszniku pytanie (chce używać tego z głównego skryptu), źle dodać informację, jak korzystać z tego z wielu modułów, więc mój przyjaciel może poczuć się lepiej. Dodaj do końca pliku MyModules.pm:

delete $INC{'MyModules.pm'}; 
1; 
+1

Właściwie 'use', gdy plik nie zawiera pakietu kończy się' do' w 'BEGIN' tak czy inaczej. Różnica, że ​​'use' zrobi dla ciebie kontrole. I tak jak w przypadku odpowiedzi choroby, będziesz edytować komentarz/łapać błędy za pomocą tak prostej rzeczy, jak polecenie 'do'. – PSIAlt

+0

@ikegami tak, ** użyj ** spowoduje ** wymaga **, co samo wywoła ** do ** po sprawdzeniu, że moduł nie jest już załadowany. I chce dołączyć do głównego scenariusza. – PSIAlt

+0

@ikegami wszystko dla ciebie, mój najlepszy przyjaciel stackoverflow. – PSIAlt

7

Można użyć

BEGIN { do 'filename.pl' or die [email protected] } 

Zobacz do. Pamiętaj, aby dołączyć 1; na dole pliku.

+1

Nie włącza się strict, ale poradzi sobie z eksporterem. – ikegami

Powiązane problemy