perl 常用module的使用

it2026-02-02  3

一些常用模块的简单描述 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()可以返回浮点数。

转载于:https://www.cnblogs.com/xiaowant/archive/2011/09/08/2171679.html

相关资源:数据结构—成绩单生成器
最新回复(0)