perl 常用模块使用例子

一些常用模块的简单描述 http://www.perldoc.com/perl5.6/pod/perlmodlib.html

在perl 中使用模块:

模块的下载地址:http://www.cpan.org/modules/01modules.index.html

安装模块:

1. perl Makefile.PL

2. make

3. make test

4. make install

也可以用如下命令安装模块(已知的适用的系统redhat 9.0,其他的我不知道,请大家试试看 :) 。

perl -MCPAN -e shell>

接着输入:install MODEL_NAME

查看模块的帮助:

perldoc MODEL_NAME

例如:

perldoc Net::FTP

已有模块:(以下的内容转自CU,谢谢CU的朋友)

说明:

以下例子代码的测试是在FreeBSD & Solaris下进行的,Perl版本为5.005_03。

(1) Net::FTP

(2) Net::Telnet

(3) LWP::Simple, get()

(4) Expect

(5) XML::Simple, XMLin()

(6) Data::Dumper, Dumper()

(7) IO::Socket

(8) Date::Manip, DateCalc(), UnixDate()

(9) Date::Manip, Date_Cmp()

(10) File::Find, find()

(11) ExtUtils::Installed, new(), modules(), version()

(12) DBI, connect(), prepare(), execute(), fetchrow_array()

(13) Getopt::Std

(14) Proc::ProcessTable

(15) Shell

(16) Time::HiRes, sleep(), time()

(17) HTML::LinkExtor, links(), parse_file()

(18) Net::Telnet, open(), print(), getline()

(19) Compress::Zlib, gzopen(), gzreadline(), gzclose()

(20) Net::POP3, login(), list(), get()

(21) Term::ANSIColor

(22) Date::Calc Calendar(), Today()

(23) Term::Cap, Tgetend(), Tgoto, Tputs()

(24) HTTPD::Log::Filter

(25) Net::LDAP

(26) Net::SMTP mail(), to(), data(), datasend(), auth()

(27) MIME::Base64, encode_base64(), decode_base64()

(28) Net::IMAP::Simple, login(), mailboxes(), select(), get()...

(29) Bio::DB::GenBank, Bio::SeqIO

(30) Spreadsheet::ParseExcel

(31) Text::CSV_XS, parse(), fields(), error_input()

(32) Benchmark

说明:

以下例子代码的测试是在RH Linux7.2下进行的,Perl版本为5.6.0。

(33) HTTP:: Daemon, accept(), get_request()...

(34) Array::Compare, compare(), full_compare()...

(35) Algorithm::Diff, diff()

(36) List::Util, max(), min(), sum(), maxstr(), minstr()...

(37) HTML::Parser

(38) Mail::Sender

(39) Time::HiRes, gettimeofday(), usleep()

(40) Image::Magick

以下模块在RedHat 9.0 ,perl version v5.8.0 built 通过。

(41) Data::SearchReplace

----------------------------------------------------------

(1)Net::FTP

#!/usr/bin/perl -w

# file: ftp_recent.pl

# Figure 6.1: Downloading a single file with Net::FTP

use Net::FTP;

use constant HOST => 'ftp.perl.org';

use constant DIR => '/pub/CPAN';

use constant FILE => 'RECENT';

my $ftp = Net::FTP->new(HOST) or die "Couldn't connect: ";

$ftp->login('anonymous') or die $ftp->message;

$ftp->cwd(DIR) or die $ftp->message;

$ftp->get(FILE) or die $ftp->message;

$ftp->quit;

warn "File retrieved successfully.\n";

-----------------------------------------------------------

(2)Net::Telnet

#!/usr/bin/perl -w

# file:remoteps.pl

use strict;

use Net::Telnet;

use constant HOST => 'phage.cshl.org';

use constant USER => 'lstein';

use constant PASS => 'xyzzy';

my $telnet=Net::Telnet->new(HOST);

$telnet->login(USER,PASS);

my @lines=$telnet->cmd('ps -ef');

print @lines;

--------------------------------------------------------------

(3)LWP::Simple, get()

#!/usr/bin/perl -w

use strict;

use LWP::Simple qw(get);

my $url = shift || "http://www.chinaunix.net";

my $content = get($url);

print $content;

exit 0;

最简单方便的get网页的方法。

-------------------------------------------------------------

(4) Expect

PHP代码:

#!/usr/bin/perl

use strict;

use Expect;

my $timeout = 2;

my $delay = 1;

my $cmd = "ssh";

my @params = qw/202.108.xx.xx -lusername -p22/;

my $pass = "passwd";

my $exp = Expect->spawn($cmd, @params) or die "Can't spawn $cmd\n";

$exp->expect($timeout, -re=>'[Pp]assword:');

$exp->send_slow($delay, "$pass\r\n");

$exp->interact();

$exp->hard_close();

exit 0;

-----------------------------------------------------------------

5) XML::Simple, XMLin()

PHP代码:

#!/usr/bin/perl -w

use strict;

use XML::Simple;

my $text = <<xml;

< ?xml version="1.0"? >

<web-app>

<servlet>

<servlet-name>php</servlet-name>

<servlet-class>net.php.servlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>php</servlet-name>

<url-pattern>*.php</url-pattern>

</servlet-mapping>

</web-app>

xml

my $x = XMLin($text);

foreach my $tag(keys %$x)

{

my %h = %{$$x{$tag}};

foreach(keys %h)

{

print "$tag => ";

print "$_ => $h{$_}\n";

}

}

exit 0;

----------------------------------------------------------------

(6) Data::Dumper, Dumper()

PHP代码:

#!/usr/bin/perl -w

use strict;

use Data::Dumper;

print Dumper(@INC);

print Dumper(%ENV);

exit 0;

-------------------------------------

(7) IO::Socket

PHP代码:

#!/usr/bin/perl -w

use strict;

use IO::Socket;

my $host = "www.chinaunix.net";

my $port = "80";

my $http_head = "GET / HTTP/1.0\nHost: $host:$port\n\n";

my $sock = IO::Socket::INET->new("$host:$port")

or die "Socket() error, Reason : $! \n";

print $sock $http_head;

print <$sock>;

exit 0;

---------------------------------------------------------------

(8) Date::Manip, DateCalc(), UnixDate()

PHP代码:

#!/usr/bin/perl

use strict;

use Date::Manip;

my $date1 = "Fri Jun 6 18:31:42 GMT 2003";

my $date2 = "2003/05/06";

my $flag=&Date_Cmp($date1,$date2);

if($flag<0)

{

print "date1 is earlier!\n";

}

elsif($flag==0)

{

print "the two dates are identical!\n";

}

else

{

print "date2 is earlier!\n";

}

exit 0;

--------------------------------------------------------------------

10) File::Find, find()

PHP代码:

#!/usr/bin/perl -w

use strict;

use File::Find;

my $file = "access.log";

my $path = "/";

find(&process, $path);

sub process{ print $File::Find::dir, "$_\n" if(/$file/); }

exit 0;

#用于在unix文件树结构中查找对象。

---------------------------------------------------------------

(11) ExtUtils::Installed, new(), modules(), version()

查看已经安装的模块的相应信息。

PHP代码:

#!/usr/bin/perl

use strict;

use ExtUtils::Installed;

my $inst= ExtUtils::Installed->new();

my @modules = $inst->modules();

foreach(@modules)

{

my $ver = $inst->version($_) || "???";

printf("%-12s -- %s\n", $_, $ver);

}

exit 0;

--------------------------------------------------------------------

(12) DBI, connect(), prepare(), execute(), fetchrow_array()

PHP代码:

#!/usr/bin/perl

use strict;

use DBI;

my $dbh = DBI->connect("dbi:mysql:dbname", 'user','passwd', '')

or die "can't connect!\n";

my $sql = qq/show variables/;

my $sth = $dbh->prepare($sql);

$sth->execute();

while(my @array=$sth->fetchrow_array())

{

printf("%-35s", $_) foreach(@array);

print "\n";

}

$dbh -> disconnect();

exit 0;

------------------------------------------------------------------------

(13) Getopt::Std

命令行参数解析。

PHP代码:

#!/usr/bin/perl

use strict;

use Getopt::Std;

my %opts;

getopts("c:hv", %opts);

foreach(keys %opts)

{

/c/ && print "welcome to ", $opts{$_} || "ChinaUnix", "!\n";

/h/ && print "Usage : $0 -[hv] -[c msg] \n";

/v/ && print "This is demo, version 0.001.001 built for $^O\n";

}

exit 0;

------------------------------------------------------------------------

(14) Proc::ProcessTable

#直接访问Unix进程表,类似ps command。

PHP代码:

#!/usr/bin/perl

use strict;

use Proc::ProcessTable;

my $pt = new Proc::ProcessTable;

foreach(reverse sort @{$pt->table})

{

print $_->pid, " => ";

print $_->cmndline, "\n";

}

exit 0;

--------------------------------------------------------------------

(15) Shell

PHP代码:

#!/usr/bin/perl

use strict;

use Shell;

print "now is : ", date();

print "current time is : ", date("+%T");

my @dirs = ls("-laF");

foreach(@dirs)

{

print if(//$/);#print directory

}

exit 0;

Shell命令直接做为函数,在Perl中调用。

---------------------------------------------------------------------

Another use of Time::HiRes Module.

(16) Time::HiRes, sleep(), time()

PHP代码:

#!/usr/bin/perl

use strict;

use Time::HiRes qw(sleep time);

$| = 1;

my $before = time;

for my $i (1..100)

{

print "$i\n";

sleep(0.01);

}

printf("time used : %.5f seconds\n", time - $before);

exit 0;

use Time::HiRes后,此模块提供sleep(), alarm(), time()的增强版以

取代perl内置的相应函数。

其中sleep()和alarm()的参数可以是小数。比如sleep(0.1)表示休眠0.1秒,

time()可以返回浮点数。

----------------------------------------------------------------------

(17) HTML::LinkExtor, links(), parse_file()

文章出处:http://www.diybl.com/course/4_webprogram/cgi/perljs/20081117/151654.html