LinuxSir.Org  
| 网站首页 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
置顶的主题  
主题工具
旧 03-12-05, 21:51 第 1 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

标题: 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

此帖于 04-04-08 18:19 被 devel 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-05, 21:53 第 2 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(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";

此帖于 03-12-12 20:55 被 devel 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-05, 21:59 第 3 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(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;

此帖于 03-12-12 20:56 被 devel 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:22 第 4 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(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网页的方法。

此帖于 03-12-12 21:11 被 devel 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:25 第 5 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(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

此帖于 03-12-09 02:30 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:26 第 6 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

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

此帖于 03-12-09 02:32 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:33 第 7 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(6) Data::Dumper, Dumper()
PHP 代码:
#!/usr/bin/perl -w
use strict;
use 
Data::Dumper;

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

此帖于 03-12-09 02:33 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:33 第 8 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(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

此帖于 03-12-09 02:33 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:34 第 9 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(8) Date::Manip, DateCalc(), UnixDate()
PHP 代码:
#!/usr/bin/perl
use strict;
use 
Date::Manip;

my $date=&DateCalc("today","-1 days"0);#yesterday
my $date=&UnixDate($date"%Y-%m-%d %T");

print 
"$date\n";
exit 
0

此帖于 03-12-09 02:34 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:34 第 10 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(9) Date::Manip, Date_Cmp()
#用于时间日期的比较
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

此帖于 03-12-09 02:34 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:35 第 11 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(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文件树结构中查找对象。 

此帖于 03-12-09 02:35 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:35 第 12 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

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

查看已经安装的模块的相应信息。
PHP 代码:
#!/usr/bin/perl
use strict;
use 
ExtUtils::Installed;

my $instExtUtils::Installed->new();
my @modules $inst->modules();

foreach(@
modules)
{
        
my $ver $inst->version($_) || "???";
        
printf("%-12s --  %s\n"$_$ver);   
}
exit 
0

此帖于 03-12-09 02:35 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:35 第 13 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(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

此帖于 03-12-09 02:36 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:36 第 14 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(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

此帖于 03-12-09 02:36 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
旧 03-12-06, 23:36 第 15 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

(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

此帖于 03-12-09 02:37 被 georgek 编辑.
  devel 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 02:25


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2012, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2011, LinuxSir.Org