blue1025的个人空间 https://blog.eetop.cn/mj8051 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

PERL 第15章 Perl的模块

已有 2562 次阅读| 2008-9-28 11:30 |个人分类:MJ8051

SOURCE HTML: http://socvista.com/bbs/viewthread.php?tid=951&extra=page%3D1

很多人已经基于Perl做了很多有意义的编程工作。
如果你碰到一个问题,很有可能已经被其他人解决了。我们可以在 Comprehensive Perl Archive Network (CPAN) 上寻找这些代码。
关于如何写模块 module ,请查阅 Alpaca book。
本章只教给大家如何使用已经存在的模块。

寻找模块

== 模块来自哪里
1. Perl 自己带的模块
2. CPAN上面提供并需要自己安装的模块

== 如何搜索CPAN的模块
1. http://search.cpan.org
2. http://kobesearch.cpan.org

== 如何知道某个模块是否已经安装
$ perldoc name_of_module
比如CGI.pm是CGI模块的文档。就可以通过下面的命令来确认。
$ perldoc CGI
如果模块不存在就会看到相应的提示信息。

安装模块

== 一般安装
下载distribution,解压缩,从shell运行若干命令。
一般README或者INSTALL文档会提供相关的信息。

== MakeMaker 安装
$ perl Makefile.PL
$ make install
(如果要指定安装路径,请使用类似下面的方法。 $ perl Makefile.PL  PREFIX=/users/fred/lib)

== Module::Build安装
$ perl Build.PL
$ ./Build install

== 安装的依赖性
有些模块的安装依赖于其他模块,可以在CPAN.pm 的shell里面通过命令安装这些模块。
$ perl -MCPAN -e shell
我试了一下,这个shell就类似一个安装向导,非常好用。

实例:File:Basename模块

== 阅读模块说明
perldoc File::Basename

== 在使用前先声明使用
use File::Basename
Perl看到这一行之后会载入该模块。然后看起来Perl就多了不少的新函数可以用。

== 使用模块提供的函数
用perldoc File::Basename 可以查看支持哪些函数,及其用法,这里给出一个例子。
my $name = "/usr/local/bin/perl";
my $basename = basename $name;  # 返回perl

从模块import某些函数的作用

== 如何import所有函数
默认情况下,Import所有函数。例如
use File::Basename;

== 如何import指定函数
use File::Basename qw/ basename /;
上例只import一个basename函数

== 什么函数也不import
use File::Basename qw/ /;

== import 有什么作用
如果用use载入了模块,事实上该模块所有函数都可以被使用。
差别在于,如果import了某个函数,则该函数可以直接使用,比如,
my $basename = basename $name;
而如果没有import该函数,则需要用全名来使用该函数,比如
my $basename = File::Basename::basename $name;

== 为什么不import某个函数
如果我们自己写的subroutine 和模块的函数同名,则使用的时候会出现混乱,因此,采用不import的策略,然后用全名的方式来使用该函数,避免混乱。

一个特殊又典型的模块File::Spec

== 代码如何在不同系统下都能使用
不是一个简单的问题。比如斜杠的用法不一样,要分别处理。这个可以人工解决,但是有些模块已经考虑了这些问题,并发布了可用的代码来解决问题。比如File::Spec就可以解决斜线的问题。用法
use File::Spec;
...
my $new_name = File::Spec->catfile($dirname, $basename);
rename($old_name, $new_name) or warn "Cannot rename: $!";

== OO模块
File::Spec的另一个特别之处是,他是基于OO面向对象的。因此,使用method的时候,使用 -> 符号。比如上例的 File::Spec->catfile 。

关于CGI和DBI

Perl的两大应用就是网络和数据库。
CGI和DBI是提供相应服务的模块。
由于不在我们硬件工程师的研究之列,故省略。











点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 13

    粉丝
  • 16

    好友
  • 15

    获赞
  • 23

    评论
  • 2824

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 18:40 , Processed in 0.013936 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部