perl学习笔记 --zt

Posted by Vincent on February 11, 2010

1. 变量
2. 列表和数组
3. 操作符
4. 流程控制

5. 函数
6. 文件
7. 格式化输出
8. 特殊变量
9. 命令行
10 模块
------------------------------

一. 直接量---常量
perl中常量和其他语言例如C语言没什么太大区别。所以在下面指出一些与其他语言不相同的地方。
1.1 数字常量
在perl中可以表示八进制和十六进制。八进制以0打头,十六进制以0x打头。
例如 $a=010 ---八进制
$b=0x10---十六进制
为了不跟八进制的数字混淆,数字直接量均不以0打头。对于大数字,通常会加逗号或下划线加以区分perl可以直接删除这些附加信息。

1.2 字符常量
首先perl中的字串结尾没有默认的结束符这与C语言相区别。perl中的结束符可以出现在字串的任何位置。在perl中有两种表现字串的方式一种是双引号,另一种是单引号。
例如 $string1="abcde"
$string2="fghijk"
为了使字串中包含引号,必须用\来把引号正常话。否则会造成字串不完整。
例如 $string3="cut the "string""====cut the
改变成
$string3="cut the \"string\""====cut the string
此规则同样适用于单引号字串。
另外perl还引入了qq和q机制来去除引号的影响。qq针对双引号,q则针对单引号。
例如 $string4=qq(the cut "strint")====the cut string
$string5=q(the cut `string`)====the cut string
类似于C语言中\n,perl字串中有一些转义字符。如下表:
\a  Bell (beep)
\b  Backspace
\cn  The Ctrl+n character
\e  Escape
\E  Ends the effect of \L, \U or \Q
\f  Form feed
\l  Forces the next letter into lowercase
\L  All following letters are lowercase
\n  Newline
\r  Carriage return
\Q  Do not look for special pattern characters
\t  Tab
\u  Force next letter into uppercase
\U All following letters are uppercase
\v  Vertical tab
例如 $string6="abc\LWO\Etian\t\udi\E"===="abcwotian   UDI"单引号区别双引号在于以下两点:
1。单引号支持多行
例如 $string7='i
am brother'
2. 单引号只支持单引号本身转义符,不支持其他转义符。
3。单引号不支持变量直接替换。
例如 $number=12;
$string8="the number is $number";
最后的string8是 the number is 12而单引号不可以。

二。标量变量---变量
perl中变量不像C语言中那样死板,随定随用。以美元起始$,遵循以下三个规则:
1。变量名可以包含字母(a至z , A至Z)字符、数字或类型标识符后面的一个下划线字符(_)。不过,变量名的第一个字符不能是数字。
2. 变量名是区分大小写字母的。
3. 单字符变量是一些系统特殊变量。$ _、$”、$ /、$ 2和$ $
最后数字变量的初始值是0,字符串初始值是空“ ”。

----------------------
列表和数组
数组跟C语言中有相同之处,但是处理起来更加灵活.而列表
C语言中是没有这个概念的.
一. 列表
首先我们来看一个列表的例子.
例如 {"abc",48,$a,3.14}
perl提供一个机制可以简便列表的写法----qw,上面的例子可以写成如下的形式:
qw(abc 48 $a 3.14)
每个元素用空格分开,显然这样的写法就不适用于有空格的元素的列表.针对列表的元素在某一个范围时,perl提供了一种更加简便的写法,如下:
例如 (1..10)
(1..10,20..40)
(aa..zz)
(2.1..5.3)----(2.1,3.1,4.1,5.3)
(4.5..1.1)----()
(3..3)----(3)
(..)也被称之为范围操作符.

二 数组
2.1 数组定义与初始化
数组的定义则不是以$打头,取而代之的是@.列表是数组的存储基础,下面是一个数组的例子。
@array1=qw(abc def gh)
如同变量我们也只讨论与C语言不相同的部分。
数组变量赋值的方式有如下几种。
@array2=qw(boy girl);
@array3=(@array3,(man,woman),male,female);
列表和数组互相复制也有如下几种形式
($a,$b,$c)=(boy,girl,man);----$a=boy,$b=girl,$c=man
($a,$b,$c)=(boy,girl);----$a=boy,$b=girl,$c 没有赋值 undef
($a,$b)=(boy,girl,man);----$a=boy,$b=girl,man空闲
($a,@b,$c)=(boy,girl,man woman);----$a=boy
@b=qw(girl man woman)
$c没有赋值undef
最后一种说明一旦遇到数组将剩余所有的元素分配给数组。
除了上述方式还有数组与数组间:
@array4=(man,woman,girl,boy,male,female);
@array4[0..2]=(man,girl,male);
@array4[0,1]=(man,girl);
@subarray2 = @array4[1..3];

2.2 数组的打印
下面两种格式打印结果完全不同
print @array1----abcdefgh
print "@array1"---abc def gh

2.3 获取数组的某个单元
除了与C语言相同方式还有如下一种方式
@array1[1..2]----(def gh)

2.4 获取数组大小
有两种方式与C语言完全不相同.
1. $#array1----2下标从0开始
2. $size=@array1----3总共有3个元素

2.5 与数组相关的库函数
(1)sort--按字符顺序排序
@array = ("this", "is", "a","test");
@array2 = sort(@array); # @array2 = ("a","is", "test", "this")
@array = (70, 100, 8);
@array = sort(@array); # @array = (100, 70, 8) now
(2)reverse--反转数组
@array2 = reverse(@array);
@array2 = reverse sort (@array);
(3)chop--数组去尾
chop的意义是去掉STDIN(键盘)输入字符串时最后一个字符--换行符。
而如果它作用到数组上,则将数组中每一个元素都做如此处理。
@list = ("rabbit", "12345","quartz");
chop (@list); # @list = ("rabbi", "1234","quart") now
( 4)join/split--连接/拆分
join的第一个参数是连接所用的中间字符,其余则为待连接的字符数组。
$string = join(" ", "this", "is","a", "string"); # 结果为"this is a string"
@list = ("words","and");
$string = join("::", @list, "colons"); #结果为"words::and::colons"
@array = split(/::/,$string); # @array = ("words","and", "colons") now

三 关联数组
为了解决普通数组的局限性----当数组很大的时候遍历起来就会很困难。perl
提供了一种新的数组关联数组。他的定义区别于普通数组以%打头,区别于普通数组的是
他的下标可以是任何值这样以来他的下标就可以没有任何顺序。
例如 %array1=(key1,value1,key2,value2,key3,value3);
其结果是 $array1{key1}=value1,其中key1可以为任何值数字,字串变量等。可以看出关联数组的个数为偶数。
perl为了能更好把下标和值区分开来采用=〉方式,array1就可以改变成如下形式
%array1=(key1=>value1,key2=>value2,key3=>value3);
关联数组的赋值与普通数组和列表相似。
为了更好的理解关联数组引入下面这一段话:

你可以把它们想象为一组卡片。每张卡片上半部分是索引而下半部分是数值。

关联数组的操作函数
1。keys(%array)操作符可生成由关联数组%array中的所有当前关键字组成的列表。即
返回奇数个元素(第1,3,5,7...个)的列表。
2。values(%array)操作符返回由关联数组%array中所有当前值组成的列表,即返回偶
数个列表。
3。echo(%array)操作符返回由一个关键字和一个值对构成的两个元素的表。对同一数组再操作时返回下一对值直至结束。若没有更多的对时,echo()返回空表。
4。delete $ARRAY{key};delete 是 Perl 所提供的函数,作用是删除关联数组中的一个key以及这个 key 所对应的 value。使用方法是 在 delete 函数之后,指定关联数组中要删除的key名称。
5。 exists (element)在Perl5中定义,判断关联数组中是否存在某元素,若存在,返回非零值(真),否则返回零值(假)。

------
操作符
perl的操作符大部分跟C语言相同,所以下面还是介绍一些不相同
的地方。
一。 操作符
1。乘幂 **
例如 2**3 ----8
乘幂不可以超过系统的表示范围否则报错。
2。数字比较<=>
例如 a<=>b
若 a>b  返回值 1
若 a=b 返回值 0
若 a<b 返回值 -1
3。逻辑运算符 &
之所以把它提出来讲是这个运算符不能应用于负整数,否则会把负数转换为
无符号数。
4。字串比较符号。
lt   小于
gt   大于
eq   等于
le   小于等于
ge   大于等于
ne   不等于
cmp   比较,返回 1, 0, or -1
cmp相当于数字比较符<=>
5. 字串合并符 .
例如 $string1="this is";
$string2="combine str"
$string3=$string1.$string2---string3="this is combine str"
从而引出另一个操作符 .=
6.字串复制操作符x
例如 $string4 = "t"x5;----string4="tttttt"
7.自加自减符号 ++ --
这个操作符大部分跟C语言中相同,只是字串同样可以++.字串的最后一个字母或者
数字加意
例如 $string5=“abc”;
$string5++;----string5="abd"
$string6="ab2";
$string6++;----string6="ab1"
不过需要注意以下几点:
1。如果最后一位是"z""Z""9"进位
2。不可以做--运算,因为perl将先将字符串转换为数字零再进行自减
例如 $string7="abc";
$string7--;----string7=-1
3。如果字符串中含有非字母且非数字的字符,或数字位于字母中,则经
过++运算前值转换为数字零,因此结果为1
例如 $string8="ab(d";
$string8++;----string8=1
8.尖括号<>
这个字符串主要用于读写文件,到那时,你将能够用它的最简单的形式,即<STDIN>
来使用尖括号运算符。这种形式告诉P e r l,应该从标准输入设备(通常是键盘)
读取一行输入信息。
例如 $a=<STDIN>;
在键盘输入b则a=b
在输入的时候需要输入回车,用函数chmop $a则可以自动去除回车符。
9.一些单目的运算符
int  int(5.6234)  返回它的参数的整数部分5。
length  length("nose")  返回它的字符串参数的长度4。
lc  lc("ME TOO")  返回它的转换成小写字母的参数"me too"
uc  uc("hal 9000")  返回与l c相反的参数值"HAL 9000"
cos  cos(5 0)  返回弧度5 0的余弦值964966
rand  rand(5)  返回从0到小于该参数值之间的一个随机数
字。如果该参数被省略,则返回0至1之间的
一个数字
二 数字与字符的相互转换
遵循以下几个原则:
1。如果某个元素看上去是个数字,那么perl在需要数字时可以将它用作数字
例如 $string9="20";
$b=$string9-2;----b=18
2. 如果某个元素看上去是个数字,那么当perl需要一个字符串时,它可以使
用数字的字符串表示法
例如 $a=20;
$string10=$a."abc";----string10="20abc"
3. 如果某个元素看上去不像一个数字,但是你将它用在需要数字的地方,那
么perl在它的位置上使用0这个值.
例如 $string11="abc";
$a=$string11+5;----a=5

----
流程控制程序
perl中也有C语言中if,while等流程控制程序,但是细节上还是
有所不同,另外perl中还存在unless和until一些语句。还有就是perl中
是没有switch语句的.
一 if语句
与C语言中不同的有如下几点:
1。 perl中采用elsif而不是C中的else if
2。 perl中的真假情况如下
数字0为假。
空的字符串(“”)和字符串“0”为假。
未定义值undef为假。
其他东西均为真。
3。 特殊的if表达式。。如果在i f语句块中只有一个表达式,那么该表达
式实际上可以放在i f语句的前面。
例如 if() {$a=1};与$a=1 if();是相同的。

二 unless语句
unless语句是与if语句起着相反的作用。
例如 if($a>5)与 unless(!$a>5)是相同的意思.

三 until语句
首先看一个例子
for($a=0;$a<0;$a++)
{
until($a==3)
{ print "$a\n" unless($a>5);
$a++;
}
}
until的意思就是直到a=3才执行后面的语句.

四 循环中的控制语句
last----break语句能够使当前正在运行的最里面的循环块退出
while($i<15)
{
last if($i==5);
$i++;
}
或者
for($i=0;$i<50;$i++)
{
if($i=18)
{
last;
}

}

next----continue语句使得控制权被重新传递给循环的顶部,同时下一个
循环的重复运行则开始进行
for($i=0;$<100;$i++)
{
next if(not $i%2)
print "even number"

}

redo其含义是重复此次循环,即循环变量不变,回到循环起始点,但要注意,
redo命令在do循环中不起作用。

五 针对列表(数组)每个元素的循环:foreach
其语法如下:
foreach localvar (listexpr) {
statement_block;
}
例:
foreach $word (@words) {
if ($word eq "the") {
print ("found the word 'the'\n");
}
}
注:
(1)此处的循环变量localvar是个局部变量,如果在此之前它已有值,则循环后仍
恢复该值。
(2)在循环中改变局部变量,相应的数组变量也会改变,如:
@list = (1, 2, 3, 4, 5);
foreach $temp (@list) {
if ($temp == 2) {
$temp = 20;
}
}
此时@list已变成了(1, 20, 3, 4, 5)。

----------
函数
perl中的函数基本上跟C语言中相同,只是在声明和调用方式有些差别.
没有C语言那么严格.

一 声明和调用
声明 sub function_name{}
调用 do function_name
&function_name如果先声明则不用&

二 局部变量
my $a
my($a,$b)
local($a)
其区别是:my定义的变量只在该子程序中存在;而local定义的变量不存在于
子程序中,但存在于该子程序和该子程序调用的子程序中

三 预定义的子程序
PERL5预定义了三个子程序,分别在特定的时间执行,它们是:BEGIN子程序在程
序启动时被调用;END子程序在程序结束时被调用;AUTOLOAD子程序在找不到某个子
程序时被调用。你可以自己定义它们,以在特定时间执行所需要的动作。如:
BEGIN {
print("Hi! Welcome to Perl!\n");
}
AUTOLOAD{
print("subroutine $AUTOLOAD not found\n"); # 变量$AUTOLOAD即未找到的子程序名
print("arguments passed: @_\n");
}
若同一个预定义子程序定义了多个,则BEGIN顺序执行,END逆序执行

------
文件和文件夹
一 打开/关闭文件
open(file_handle,"file_path")
close(file_handle)

二 读文件
语句$line = <MYFILE>;从文件中读取一行数据存储到简单变
量$line中并把文件指针向后移动一行。
语句@array = <MYFILE>;把文件的全部内容读入数组@array,
文件的每一行(含回车符)为@array的一个元素。

三 写文件
open(file_handle,">file_patch")写入的数据覆盖原先的数据
open(file_handle,">>file_patch")写入的数据追加原先的数据后
写入
print file_handle data

四 文件测试
语法 if(-para file)
para有如下几种:
-b 是否为块设备
-c  是否为字符设备
-d  是否为目录
-e  是否存在
-f  是否为普通文件
-g  是否设置了setgid位
-k  是否设置了sticky位
-l  是否为符号链接
-o  是否拥有该文件
-p  是否为管道
-r  是否可读
-s  是否非空
-t  是否表示终端
-u  是否设置了setuid位
-w  是否可写
-x  是否可执行
-z  是否为空文件
-A  距上次访问多长时间
-B  是否为二进制文件
-C  距上次访问文件的inode多长时间
-M  距上次修改多长时间
-O  是否只为“真正的用户”所拥有
-R  是否只有“真正的用户”可读
-S  是否为socket
-T  是否为文本文件
-W  是否只有"真正的用户"可写
-X  是否只有"真正的用户"可执行

五 打开/关闭目录
opendir(dir_handle,"patch")
close(dir_handle)

六 读取目录
@file=readir(dir_handle)

-----------------
格式化输出
在一个perl中可以有多个format。
一 打印的基本步骤
1、将系统变量$~设成所要使用的格式
2、调用函数write
函数write将结果输出到标准输出文件STDOUT,我们也可以使它将结果
输出到任意其它的文件中。最简单的方法就是把文件变量作为参数传递给write
例如 write (MYFILE);
也可以通过如下方式
例如 select(MYFILE)
$~ = "MYFORMAT";
write;

二 输出变量
如果在子程序中调用需要注意局部变量的作用域。另外输出的格式有
如下几种:
@<<<  左对齐输出
@>>>  右对齐输出
@|||  中对齐输出
@##.##     固定精度数字
@*  多行文本
每行的长度就是< > |的个数。
针对转义字符@<>作为平常字符输出的时候采用“”方式。

格式的声明如下:
format WRITELETTER =
**********************************
@: @<<<<<<
$a,$b
**********************************
.

三 带附加讯息的格式化输出
3.1 分页输出
设置页眉
format STDOUT_TOP =
Consolidated Widgets Inc. 1994 Annual Report
.
设置页的行数,默认是60
$= = 66
此赋值语句必须出现在第一个write语句前。

3.2 格式化字串的长度
在Perl中对长字符串(包含换行)进行格式化的值域定义很简单,只需把
打头的@字符换成^就行了,这种文本格式化中,Perl解释器在一行中放置尽可能多
的单词。每当输出一行文本,被输出的子串就从变量中删除,再次在域值中使用该
变量就把剩下的字符串继续按格式输出。当内容已输出完毕,该变量就成了空串,
再输出就会输出空行,为避免输出空行,可以在值域格式行首加一个~字符。
很明显,当字符串长度不明确时,这种用法很不方便,原因就在于它指明
了输出的行数上限,超过这一上限的字符就不会被输出,解决方法很简单,就是在
域值格式行首加两个~字符,这样就会持续按格式输出文本直到输出完毕。
例如 format MYFORMAT =
===================================
Here is the text I want to display.
~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$quotation

--------------
特殊变量
一 缺省变量和参数
变量名  英文名称  说明
$_  $ARG  全局标量充当函数参数以及模式寻找空
间的缺省变量
默认的输入/输出和格式匹配空间
@_  n/a  存储数组参数,访问方式: $_[num]
传给子程序的参数列表
@ARGV  n/a  脚本的命令行参数
$ARGV  n/a  当从空文件头<>读取时,它包含了当前文件的文件名
从默认的文件句柄中读取时的当前文件名

二 正规表达式变量
$(num)  n/a  n/a
$&  $MATCH  最近一次成功的匹配中相匹配的字符串
$'  $POSTMATCH  最近一次成功的匹配子串之后的字符串
$`  $PREMATCH  最近一次成功的匹配子串之前的字符串
$+  $LAST_PAREN_MATCH  最近一次成功的匹配同一组子模式相匹配的最后
一个子串
与上个正则表达式搜索格式匹配的最后一个括号

三 输入/输出变量
$.  $INPUT_LINE_NUMBER 上次阅读的文件的当前输入行号
$/  $INPUT_RECORD_SEPARATOR
$\   $OUTPUT_RECORD_SEPARATOR 当前输入记录分隔符,默认情况是新行
$|   $OUTPUT_AUTOFLUSH 控制对当前选择的输出文件句柄的缓冲
$,  $OUTPUT_FIELD_SEPARATOR 当前输出字段分隔符
$"  $LIST_SEPARATOR 列表分隔符
$*  设置1表示处理多行格式.现在多以/s和/m修饰符取代之.
$-[0] 代表当前匹配的正则表达式在被匹配的字符串中的起始的位置
$+[0]  代表当前匹配的正则表达式在被匹配的字符串中的终止的位置

四 文件句柄/格式变量
$#  $OFMT 打印数字时默认的数字输出格式
$  $OUTPUT_AUTOFLUSH 当前输出记录的分隔符
$%  $FORMAT_PAGE_NUMBER 当前输出通道的当前页号
$=  $FORMAT_LINES_PER_PAGE 当前页面可打印行的数目
$-  $FORMAT_LINES_LEFT 当前页可打印的行数,属于Perl格式系统的一部分
$~  $FORMAT_NAME 当前报告格式的名字
$^  $FORMAT_TOP_NAME 当前通道最上面的页面输出格式名字
$:  $FORMAT_LINE_BREAK_CHARACTERS 字符设置,此后的字符串将被分开,以填充连续的字段
$^L  $FORMAT_FORMFEED 发送到输出通道的走纸换页符
$^A  $ACCUMULATOR 打印前用于保存格式化数据的变量
$;  在仿真多维数组时使用的分隔符

五 错误变量
$?  $CHILD_ERROR 返回上一个外部命令的状态
$@  $EVAL_ERROR Perl解释器从eval语句返回的错误消息
$!  $ERRNO  #根据上下文内容返回错误号或者错误串
$^E  $EXTENDED_OS_ERROR 在非UNIX环境中的操作系统扩展错误信息

六 系统变量
$$  $PROCESS_ID Perl解释器的进程ID
$<  $REAL_USER_ID 当前执行解释器的用户的真实ID
$>  $EFFECTIVE_USER_ID 当前进程的有效用户ID
$(  $REAL_GROUP_ID 当前进程的组ID
$)  $EFFECTIVE_GROUP_ID 当前进程的有效组ID
$0  $PROGRAM_NAME 包含正在执行的脚本的文件名
$^X  $EXECUTABLE_NAME Perl二进制可执行代码的名字
$]  n/a 数组中第一个元素的索引号
$[  n/a Perl解释器的子版本号
$^O  $OSNAME 操作系统名
$^T  $BASETIME 从新世纪开始算起,脚步本以秒计算的开始运行的时间
$^W  $WARNING 警告开关的当前值
%ENV  n/a 环境变量列表
%SIG  n/a 信号列表及其处理方式
$^C  $COMPILING
$^D  $DEBUGGING 调试标志的值
$^F  $SYSTEM_FD_MAX 最大的文件捆述符数值
$^I  $INPLACE_EDIT 内置控制编辑器的值
$^M  n/a 备用内存池的大小
$^P  $PERLDB 指定当前调试值的内部变量
$^R  $LAST_REGEXP_CODE_RESULT 正则表达式块的上次求值结果
$^S  $EXCEPTIONS_BEING_CAUGHT 当前解释器状态
$^V  $PERL_VERSION
$^H  由编译器激活的语法检查状态

七 其余
@INC  n/a 在导入模块时需要搜索的目录列表
%INC  去n/a 通过do或require包含的文件列表

--------------
命令行工具
debug可以帮助我们很好的review我们的代码。类似于VC中的
debug可以step by step的调试程序,同样可以设置断点。可以在debug
过程中改变某个变量的值。例如
DB<1> $a=5
另外如果想查看某个变量的值可以用print命令
DB<1>print $a

一 开始debug及相关的指令
perl -d script_name
如果你的脚本的语法或函数拼写没有错误的话就直接显示
Loading DB routines from perl5db.pl version 1.0401#(你的版本号可能不一样)
Emacs support available.
Enter h or `h h` for help.
main::(文件名:1):  ...............    #显示该脚本的第一行可执行代码

DB<1>_   #表示在等待他的第一个命令

其中1表示第一个debug指令,如果你再输入一个指令n数目就会自动加一。
DB<1> n
n表示next,表示程序运行下一步。
DB<2> l
l表示运行当前10行,再输入l则运行下一个10行。如果想从某特定行开始运
行输入如下命令
DB<3>l line_number 例如 DB<3>l 11
同样可以设置起始行和结束行,命令如下
DB<4>l start_no-end_no 例如 DB<4>l 10-15
程序运行的当前行由==>来表示

二 设置断点
设置断点的命令如下
DB<5>b line_no例如 DB<5>b 22
与其对应的另一个命令,就是继续执行程序到下一个断点或者程序的结束
DB<6>c
取消断点命令如下
DB<7>d line_no例如 DB<7>d 22
查看所有的断点
DB<8>L

三 其他指令
DB<9>R  重新启动程序

DB<10>q 退出debug程序

DB<11>s 单步执行你的程序,它可以执行函数,
然后在函数的第1个指令处停止运行

四 其他perl命令行
perl -c 由此检查所有语法错误。每次修改 perl 程序之后我都
会立刻使用它来找到任何语法错误。
-W 与#!user/bin/perl -w作用相同,后者应用比前者要好
-T 它让 perl 出于了 taint 模式中。在这个模式里,Perl
会质疑任何程序外传来的数据。
-e 可以让 Perl 代码在命令行上被编译器直接执行.例如:
perl -e print "execute perl diretly";
-v 若要了解更加详细的信息,比如该解释程序是如何创建的,
何时创建的.
-n 可用于将任何- e语句封装在该小程序中
while(<>)
{
}
例如:perl -n -c 's/^\s+//g; print $_' file1
名字为file1的文件被打开,并被赋予while循环中的$ _,
while(<>)
{
s/^\s+//g;
print $_
}

-p 与-n作用相同,只是自动写入另一个文件
例如:perl -p -c 's/^\s+//g; print $_' file1>file2

-------------
  模块
 这里的模块感觉上相当于一个类库。我们可以调用这个
类库里的函数。我们也称之为package即包。
一 如何使用模块
使用如下的命令: use MODULE_NAME
例如  use Cwd
位置随便放,不过就像C语言中一样最好是放在程序的最开始.
对模块中某个函数的引用
$MODULE_NAME::FUNCTION_NAME
例如 $file::copy
这个有点类似于C plusplus的语法.

二 使用模块的步骤
1) Perl解释程序打开你的程序并读入所有代码,直到use Cwd语句被找到。
2) 当你的perl解释程序安装时,它将得到关于它的安装录的通知。该目录被搜索,以便找出称为Cwd的模块,该模块是包含perl代码的一个文件。
3) Perl读取该模块,该模块运行时需要的所有函数和变量均被初始化。
4) Perl解释程序从上次终止的位置开始,继续读取和编译你的程序当有关模块出错的时候可能有以下两种情况:
1. 模块名拼写错误.
2. 当前版本的perl或者perl标准包不包含这个模块.

---转贴 http://blog.csdn.net/yc0188/category/307198.aspx

--此乃转贴,有些总结的不错,但是不过完善,自己还在学习,稍后把自己学习到的整理起来!


This work is licensed under a CC A-S 4.0 International License.