【ningoo】編寫Perl模組

idba發表於2008-05-19

這兩天在用Perl編寫一些監控指令碼,其實寫程式碼也是一件挺有意思的事情,就是挺廢時間的。而且,由於語法不太熟,基本想到一個東西都要先Google一下看怎麼實現。Perl的語法相對來說有點晦澀,主要是一些內建變數和函式處理得相當精巧,而過於精緻的東西理解起來就有點費力。相對於Shell,Perl在很多方面更加強大高效,比如Hash(關聯陣列)就非常好用,如果要將不同主機發出來的告警資訊傳送到不同的責任人,在shell中要做非常多的if或者case判斷,修改起來也非常費力,而使用關聯陣列,則可以輕鬆實現該功能,程式碼簡潔,配置方便,一個字,爽。

Perl支援以模組對程式碼進行封裝。著名的CPAN上就有非常多好用的Module,可以極大的減輕開發量。一個簡單的模組:

package NinGoo;
require Exporter;
use strict;
use warnings;

our @ISA     = qw(Exporter);
our @EXPORT  = qw(fun_public); #要輸出給外部呼叫的函式或者變數,以空格分隔
our @version = 1.0;
sub func_private{
  print "This is a private function";
}

sub func_public{
 print "Hello,world\n";
 func_private();
}

1;
__END__

模組的檔名一般以.pm做字尾,名字和package相同,也就是上面這個Module的名字為NinGoo.pm。然後在普通的.指令碼中呼叫:

#!/usr/bin/perl -w
# creator: NinGoo
# function: test perl module

BEGIN {
    push (@INC,'/home/module');
}

use strict;
use NinGoo;

func_public();

O’Relly出版了一系列Perl的圖書,比較著名的大駱駝《Programming Perl》在這裡有一個線上中文版本的,可以看看。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-277796/,如需轉載,請註明出處,否則將追究法律責任。

相關文章