perl-模块
发现一个规律,早上学习效率高,下午效率低,晚上效率又高起来了。很开心的发现一件事,就是我现在可以拿perl写简单的程序了,不知不觉中,感觉很快。不知道这是偏爱还是我学的太过肤浅。不管那么多了,以后多写perl程序。
module
模块是什么:是一个可重复执行的代码段,这个代码段里包含了必要的属性和方法用来实现特定的功能。
那么perl的模块就是放在了[cpan](Comprehensive Perl Archive Network )上面。[搜索页面](CPAN Search )可以搜索到相关模块。
创建自己的module
- 取名:
modulename.pm
- 在文件开头写
package modulename
,这样会让模块成为一个package - 在文件最后写
1;
,让文件返回为true
模块的导入和使用
三种导入方式:
do
:从@INC
路径搜索模块,如果没找到,会自动忽略require
:如果没找到模块会报错,重复导入会忽略use
:在程序启动之前导入模块,这也是最常用的
调用函数:
使用双冒号,但是perl6中改为使用点了。
module_name::subroutine_name
日志模块举例
新建模块
- 首先确定好模块名字:
FileLogger
- 建模块文件
FileLogger.pm
第一种写法:这里省去了很多的接受参数的步骤,而是使用了默认取值方式
函数接受到的参数默认放入了@_
数组中,所以可以通过索引取值$_[index]
1 | package FileLogger; |
第二种写法:这里就使用了shift
来接受参数重新赋值给变量,以及将@_
重新赋值给了数组。等于说是复制了一份,这么做的好处就是不会对传进来的源数据有任何影响。
1 | package FileLogger; |
使用模块
1 | #!/usr/bin/perl |
除了使用函数的方法值得注意外,如何指定模块是一个很重要的步骤。因为如果仅仅只写use FileLogger
那么运行时会报错,说无法找到这个模块。
所以我们需要使用use lib 模块所在目录
来指定从哪里找到它。不过这仅仅是说自己写的模块,如果是下载的,那么系统早已将模块加入到了它可以找到的路径。
指定模块位置的方法:
在
~/.xinitrc
中加入1
export PERL5LIB=/home/narcissus/Documents/script/perl
在脚本中指定位置:
1
use lib '/home/narcissus/Documents/script/perl';
下一个目标是haskell,因为我的xmonad的topbar失效了,我又找不到失效的原因,所以这次打算好好学学,真真正正的自己写出满意的桌面来。