首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

perl 常用模块使用例子

作者:  时间: 2010-10-21
一些常用模块的简单描述
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: $@\n";
$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

#!/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()

#!/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 %= %{$$x{$tag}};
   foreach(
keys %h)
   {      
      print 
"$tag => ";
      print 
"$_ => $h{$_}\n";
   }
}
exit 
0


(6) Data::Dumper, Dumper()

#!/usr/bin/perl -w
use strict;
use 
Data::Dumper;

print 
Dumper(@INC);
print 
Dumper(%ENV);
exit 
0

==============================================================
未完待续...