2012-11-15 21 views
6

पर्ल स्क्रिप्ट में स्क्रिप्ट की शुरुआत में सभी मॉड्यूल नाम होते हैं।एक फ़ाइल को शामिल करने के लिए जिसमें सभी आवश्यक पर्ल मॉड्यूल नाम शामिल हैं?

पूर्व:

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; 

कैसे एक और फ़ाइल में सभी मॉड्यूल के नाम रखने के लिए और मुख्य पर्ल स्क्रिप्ट में फ़ाइल शामिल करने के लिए?

धन्यवाद।

+0

पहले: 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

उत्तर

6

अपना खुद का मॉड्यूल बनाएं। लेकिन, यदि आप इस मॉड्यूल में पैकेज बनाते हैं तो strftime इत्यादि को अन्य नामस्थान में आयात किया जाएगा। इस .pm में कोई package कीवर्ड थी

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; 

ध्यान दें: आप इस smiple करने के लिए से थोड़ा हैक कर सकते हैं:

MyModules.pm। आपकी स्क्रिप्ट:

use MyModules; 

प्लेस स्क्रिप्ट के साथ एक ही निर्देशिका में इस .pm या मॉड्यूल क्रम पर खोज पथ जोड़ें:

use lib '/my_modules_dir/'; 
use MyModules; 

उपयोग की और आदेशों की आवश्यकता होती है अनुशंसित नहीं है, क्योंकि वे स्क्रिप्ट स्टार्ट पर वाक्यविन्यास की जांच न करें। सुनिश्चित करें कि आप ब्लॉक शुरू में उन्हें जगह कर सकते हैं, लेकिन मुझे लगता है कि इसकी मुश्किल रास्ता और आम तौर पर BEGIN{ require ..} रूप में ही है use

युपीडी: Ikegami विख्यात समस्या इसकी नहीं काम कर रहा है जब आप कई मॉड्यूल से इस का उपयोग करें। भले ही स्टार्टर की जानकारी प्रश्न (वह मुख्य लिपि से इसका उपयोग करना चाहते हैं), बीमार जानकारी को कई मॉड्यूल से इसका उपयोग कैसे करें, इसलिए मेरा मित्र बेहतर महसूस कर सकता है। MyModules.pm के अंत में जोड़ें:

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

वास्तव में 'उपयोग' जब फ़ाइल में पैकेज नहीं होता है, वैसे भी 'BEGIN' में' do' के साथ समाप्त होता है। अंतर 'उपयोग' आपके लिए चेक करेगा। और, जैसा कि कोरोबा के उत्तर के मामले में आप 'डू' कमांड जैसी सरल चीज़ के साथ बग को टिप्पणी/पकड़ लेंगे। – PSIAlt

+0

@ikegami हां, ** उपयोग ** परिणाम ** ** की आवश्यकता होगी ** जो ** मॉड्यूल को पहले से लोड किया गया है यह जांचने के बाद ** ** ** कॉल करेगा। और वह मुख्य लिपि से शामिल करना चाहता है। – PSIAlt

+0

@ikegami सब कुछ तुम्हारे लिए, मेरा सबसे अच्छा stackoverflow दोस्त। – PSIAlt

7

आप उपयोग कर सकते हैं

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

देखें do। फ़ाइल के निचले हिस्से में 1; शामिल करना सुनिश्चित करें।

+1

यह सख्त चालू नहीं होगा, लेकिन यह निर्यातक को संभालेगा। – ikegami

3

आप Toolkit मॉड्यूल देख सकते हैं।

संबंधित मुद्दे