2012-11-15 23 views
6

Perl komut dosyaları, komut dosyasının başına tüm modül adlarını içerir.Gerekli tüm Perl modül adlarını içeren bir dosya nasıl eklenir?

Ör:

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; 

Nasıl başka dosyadaki tüm modül isimlerini tutmak ve ana perl dosya eklemek için?

Teşekkürler.

+0

Önceden: 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-large-list-of-modules-between-many-independen http://stackoverflow.com/questions/6412799/perl-how-to-make-use-mydefaults-with-modern-perl-utf8-defaults – daxim

cevap

6

Kendi modülünüzü oluşturun. Ancak, eğer bu modülde paket yaparsanız, strftime vb. Başka bir isim alanına aktarılacaktır. Bu smiple yapmak litle kesmek yapabilirsiniz:

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; 

Not Bu .pm hiçbir package kelime yoktu. Senaryonuz: çünkü bunlar, tavsiye edilmez

use lib '/my_modules_dir/'; 
use MyModules; 

Kullanımı ve komutları gerektiren yapın:

use MyModules; 

Yeri komut dosyası ile aynı dir içine bu .pm veya çalışma zamanında modülleri arama yolu ekleyin komut dosyası başlangıcında sözdizimini kontrol etmeyin. Eğer blok BEGIN içine yerleştirebilirsiniz ama bence onun zor yolu ve genellikle BEGIN{ require ..} aynıdır Tabii use

UPD: Ikegami kaydetti sorun onun değil birçok modüllerden bu kullandığınızda çalışma. Her ne kadar başlangıç ​​sorularının bilgisi (bunu ana komut dosyasından kullanmak istiyor), birçok modülden bunu nasıl kullanacağım konusunda bilgi ekleyeceğim, böylece arkadaşım daha iyi hissedebiliyor. MyModules.pm'nin sonuna ekle:

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

Dosya, paket biterse, "BEGIN" içinde "do' "ile bittiğinde aslında' use' işlevini kullanın. 'Use' 'ın sizin için kontrolleri yapacağı fark. Ve, choroba'nın cevabında olduğu gibi, yorumu düzenleyeceksiniz ve hataları "do" komutu gibi basit bir şeyle yakalayacaksınız. – PSIAlt

+0

@ikegami evet, ** kullanımı **, ** modülünün zaten yüklenmediğini kontrol ettikten sonra ** ** yapacağı ** gerektirecektir. Ve ana senaryodan eklemek istiyor. – PSIAlt

+0

@ikegami sizin için her şey, en iyi stackoverflow arkadaşım. – PSIAlt

7

Sen

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

do Bkz kullanabilirsiniz. Dosyanın altına 1;'u dahil ettiğinizden emin olun.

+1

Bu kesinlikle açılmayacak, ancak ihracatçıyı ele alacaktır. – ikegami

3

Toolkit modülüne bakabilirsiniz.

İlgili konular