技術(shù)分享 解析Perl模塊創(chuàng)建和導(dǎo)入方法
本文和大家重點(diǎn)討論一下Perl模塊的概念,多數(shù)大型程序都分割成多個(gè)部件,每一部件通常含有一個(gè)或多個(gè)子程序及相關(guān)的變量,執(zhí)行特定的一個(gè)或多個(gè)任務(wù)。集合了變量和子程序的部件稱為程序Perl模塊。
Perl模塊
多數(shù)大型程序都分割成多個(gè)部件,每一部件通常含有一個(gè)或多個(gè)子程序及相關(guān)的變量,執(zhí)行特定的一個(gè)或多個(gè)任務(wù)。集合了變量和子程序的部件稱為程序Perl模塊。
1、創(chuàng)建Perl模塊
Perl5中用包來創(chuàng)建Perl模塊,方法是創(chuàng)建包并將之存在同名的文件中。例如,名為Mymodult的包存貯在文件Mymodult.pm中(擴(kuò)展名.pm表示PerlModule)。下例的Perl模塊Mymodult含有子程序myfunc1和myfunc2及變量$myvar1和$myvar2。
- 1:#!/usr/local/bin/perl
- 2:
- 3:packageMymodule;
- 4:requireExporter;
- 5:@ISA=qw(Exporter);
- 6:@EXPORT=qw(myfunc1myfunc2);
- 7:@EXPORT_OK=qw($myvar1$myvar2);
- 8:
- 9:submyfunc1{
- 10:$myvar1+=1;
- 11:}
- 12:
- 13:submyfunc2{
- 14:$myvar2+=2;
- 15:}
第3~7行是標(biāo)準(zhǔn)的PerlPerl模塊定義方式。第3行定義包,第4行包含內(nèi)置PerlPerl模塊Exporter,6、7行進(jìn)行子程序和變量的輸出以與外界聯(lián)系。第6行創(chuàng)建名為@EXPORT的特殊數(shù)組,該數(shù)組中的子程序可以被其它程序調(diào)用,這里,myfunc1和myfunc2可以被訪問。其它任何在Perl模塊中定義但沒有賦給數(shù)組@EXPORT的子程序都是私有的,只能在Perl模塊內(nèi)部調(diào)用。第7行創(chuàng)建另一個(gè)名為@EXPORT_OK的特殊數(shù)組,其中含有可被外部程序訪問的變量,這里含有$myvar1和$myvar2。
2、導(dǎo)入Perl模塊
將Perl模塊導(dǎo)入你的Perl程序中使用use語句,如下句導(dǎo)入了MymodulePerl模塊:
useMymodule;
這樣,Perl模塊Mymodule中的子程序和變量就可以使用了。
取消導(dǎo)入Perl模塊使用no語句,如下句取消了MymodulePerl模塊的導(dǎo)入:
noMymodule;
下面看一個(gè)導(dǎo)入Perl模塊和取消導(dǎo)入的例子,使用integerPerl模塊要求所有數(shù)字運(yùn)算基于整數(shù),浮點(diǎn)數(shù)在運(yùn)算前均被轉(zhuǎn)化為整數(shù)。
- 1:#!/usr/local/bin/perl
- 2:
- 3:useinteger;
- 4:$result=2.4+2.4;
- 5:print("$result\n");
- 6:
- 7:nointeger;
- 8:$result=2.4+2.4;
- 9:print("$result\n");
程序輸出如下:
$program
4
4.8
$
如果use或no語句出現(xiàn)在語句塊中,則只在該塊的有效范圍內(nèi)起作用,如:
- useinteger;
- $result1=2.4+2.4;
- if($result1==4){
- nointeger;
- $result2=3.4+3.4;
- }
- $result3=4.4+4.4;
結(jié)果輸出如下:
4
6.8
8
這里,no語句只在if語句中有效,出了if語句仍使用integerPerl模塊,因此4.4在做加法前被轉(zhuǎn)化成了4。
3、預(yù)定義Perl模塊
Perl5提供了許多有用的預(yù)定義Perl模塊,可以用use導(dǎo)入和no語句取消。下面是庫中最有用的一些Perl模塊:
Perl文檔中有完整的預(yù)定義Perl模塊列表。
注:世界各地的Perl5用戶寫了許多有用的Perl模塊,CPAN(ComprehensivePerlArchiveNetwork)的Perl文檔有其完整的列表。關(guān)于CPAN的更多信息見其網(wǎng)址:http://www.perl.com/perl/CPAN/README.html。
【編輯推薦】
- 學(xué)習(xí)筆記 Perl模塊概述
- Perl文件句柄概念詳解
- 解析四大Perl操作符用法
- 淺析Perl面向?qū)ο缶幊逃梅?/a>
- Perl標(biāo)量轉(zhuǎn)換函數(shù)用法指南