perl简介

来源:互联网 发布:数控编程视频教学视频 编辑:程序博客网 时间:2024/05/29 07:58

(1)Perl 最初的设计者为拉里·沃尔(Larry Wall),他于1987年12月18日发表。Perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl象C一样强大,象awk、sed等脚本描述语言一样方便。Perl 一般被称为“实用报表提取语言”(Practical Extraction and Report Language),你也可能看到“perl”,所有的字母都是小写的。一般,“Perl”,有大写的 P,是指语言本身,而“perl”,小写的 p,是指程序运行的解释器

(2)编程语言

Perl是由Larry Wall设计的,并由他不断更新和维护的编程语言。
Perl具有高级语言(如C)的强大能力和灵活性。事实上,你将看到,它的许多特性是从C语言中借用来的。
Perl与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl来运行而已。这意味着Perl对于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。
Perl提供脚本语言(如sed和awk)的所有功能,还具有它们所不具备的很多功能。Perl还支持sed到Perl及awk到Perl的翻译器。
简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便。
(3)特点

Perl的解释程序是开放源码的免费软件,使用Perl不必担心费用。Perl能在绝大多数操作系统运行,可以方便地向不同操作系统迁移。
Perl 是一种能完成任务的语言。从一开始,Perl 就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言。它可以很容易操作数字,文本,文件和目录,计算机和网络,特别是程序的语言。这种语言应该很容易运行外部的程序并且扫描这些程序的输出获取感兴趣的东西。而且它还应该很容易能把这些你感兴趣的东西交给其它程序做特殊的处理。当然,这种语言还应该很容易在任何现代的操作系统上可以移植地编译和运行
(4)基本语法
变量定义,以$号开头,如:$num =1;
数组定义,以@开头,如:@array = (1,2,3);
数组元素调用 $array[index],其中index表示数组下标,如上例,$array[0]的值是1
散列定义,以%开头,如:%hash=("a",1,"b",2);
散列调用 %hash,其中keys表示键值,多用字符串表示,注意hash的key必须具有唯一性,但value可以不唯一,为此hash的key经常被用来做唯一化处理,如上例中的"a", "b", values是keys对应的值,如1,2。$hash{"b"}的值是2。
(5)
优点:
Perl追求的是简单, 解决一个一般的问题用它几行代码就完成了. 一个稍复杂一点的问题代码也不会超过一屏! 在软件测试中,Perl通常是非常重要的角色。一般一个测试通用函数库就要分十几个文件,甚至更多,包含多达上千个定制功能。而这些函数将在主函数运行时,不定数量的被调用。几乎可以说,一切自动过程都是由Perl自己完成的,可见其功能的强大和在当今计算机技术高速发展的时期仍然发挥着重要的作用。
Perl 最初是当做一种 Unix 的脚本语言设计的,但是她早就移植到大多数其它操作系统里了。因为 Perl 几乎可以在任何地方运行,所以 Perl 可以说是当今最具有移植性的编程环境。要想写可移植的 C/C++ 程序,你得在程序里加上一大堆 #ifdef 标签来区分不同的系统。要想写可移植的 Java 程序,你必须理解每种新的 Java 实现的特质。要想写可移植的shell,你可能要记住每条命令在每种操作系统上的语法,走运的时候你可能可以找到一些公共的东西。而要想写可移植的 Visual Basic 程序,那么你只需要对“移植”有个更灵活的定义就可以了。
我们很高兴的是 Perl 避免了所有这些问题,同时还保留了这些语言中的许多优点,同时还有一些自己的特色。Perl 的特色来自许多方面:它的特性集的工具,Perl 社区的创造性,以及开源运动的大环境。不过,许多这些特性都是混合的东西;Perl 的身世复杂,它总是把事物看成是优点的不同方面,而不是弱点。Perl 是“背黑锅我来”的语言。如果你觉得自己陷入一团乱麻之中,非常渴望自由,那么请使用 Perl。
Perl 是跨文化的。Perl 的爆炸性增长很大程度上是因为那些前 Unix 系统程序员的渴望,他们希望从他们的“老家”带着尽可能多的东西。对于他们而言,Perl 是可移植的 Unix 文化蒸馏器,是"此路不通"的沙漠中的绿洲。从另外一个角度来看,Perl 还可以从另外一个方向运转:在 Windows 上工作的 web 设计者通常会非常开心地发现他们的 Perl 程序可以不加修改地在 Unix 服务器上跑。
尽管 Perl 在系统程序员和 web 设计师中间非常流行,但这只是因为是他们最早发现 Perl 的,Perl 可以用于更广泛的用途。从 Perl 最早的文本处理语言开始,它已经发展成为一种非常复杂的,通用的编程语言,以及完整的开发环境,包括调试器,调节器,交叉引用,编译器,库,语法提示编辑器,以及所有其它“真正”的编程语言所具有的所有挂勾,只要你需要。当然这些东西都是让我们可能处理难的问题的东西,而且很多其它语言也可以做到这一点。Perl 之所以成为 Perl 是因为它从来不会因为保持简单事情简单化而丢失其他方面的特性。
因为 Perl 既强大又好用,所以它被广泛地用于日常生活的方方面面,从宇航工程到分子生物学,从数学到语言学,从图形处理到文档处理,从数据库操作到网络管理。很多人用 Perl 进行快速处理那些很难分析或转换的大批量数据,不管你是处理 DNA 序列,网页,还是猪肚皮的未来都无所谓。实际上,在 Perl 社区有一个笑话就是,下次股市大崩盘就很有可能是哪个家伙写的脚本里头有臭虫造成的。(不过,乐观点来看就是,任何还在失业的股票分析师仍然有可以利用的技巧。)
Perl 的成功有许多原因。Perl 早在开源软件的名字出现之前就已经是一个成功的开源项目了。Perl 是自由的,并将永远自由下去。你可以在任何合适的场合使用 Perl,只需要遵守一个非常自由的版权就可以了。如果你在从事商业活动并且还想使用 Perl,那么用就是了。你可以把 Perl 嵌入到你写的商业软件中而不需要支付任何费用也没有任何限制。如果你碰上一个 Perl 社区解决不了的问题,那你也还有最后的一招:源程序本身。 Perl 社区不会在“升级”的伪装下租给你它们的商业秘密。而且 Perl 社区也不会“停业 ”,更不会让你孤立无援。
Perl 是自由软件这一点无疑对它是有帮助的。但这一条并不足以解释 Perl 现象,因为许多自由软件包没有能繁荣起来。Perl 不仅自由;而且好玩。人们觉得自己在 Perl 里可以有创造力,因为它们有表达的自由:他们可以选择是为计算机速度优化还是为程序员的速度优化,是冗长还是简洁,是选择可读性还是可维护性,或者选择复用性,移植性,接受性和传授性等等。假如你进入一次模糊的 Perl 比赛,甚至你还可以为模糊性做优化。
Perl 可以给予你所有这些自由,因为它是一门有着分裂人格的语言。Perl 同时是很简单并且很富有的语言。Perl 从其它地方拿来好主意,然后把它们安装到易用的框架里面。对于只是喜欢她的人来说,Perl 是实用抽取和报表语言(Practical Extractoin and Report Language)。对那些热爱她的人而言,她是变态电子垃圾制造者(Pathologically Electric Rubbish Lister)。在少数人眼里,Perl 是毫无意义的重复练习。不过世界需要一点点冗余。精简主义者总是想把事物分隔开。而我们则总是企图把它们合并到一起。
Perl 之所以是简单的语言是有很多原因的。比如你用不着知道什么特殊的指令就可以编译 Perl 程序--只要把它当做批处理或者 shell 脚本执行就可以了。Perl 的类型和结构很容易使用和理解。Perl 对你的数据没有任何限制--你的字串和数组可以要多长就多长(只要你有足够的内存),而且它们都会自动增长。Perl 不会强迫你学习新的语法和语意,Perl 改从许多其它你已经熟悉的语言里(比如 C, awk, BASIC 和 Python, 英文,希腊语等)借来语法。实际上,任何程序员都可以从书写良好的 Perl 代码段中读懂它的含义。
最重要的是,你不用先学习所有 Perl 的东西就可以开始写有用的程序。你可以写很小的 Perl 程序。你也可以象小孩那样写 Perl 程序,我们保证不会笑话你。或者更准确地说是,我们绝不会笑话小孩做事情的创造性。Perl 里的许多观点都是从自然语言中借来的,其中一条最好的观点就是只要你能把自己的意思表述清楚,那么你就可以使用这些语言的一个子集。Perl 文化可以接受任何熟练程度的成员。我们不会在你背后放个语言警察。如果你的老板不炒你,而且你的 Perl 脚本也能完成工作,那么它就是“正确”的。
尽管 Perl 很简单,但它仍然是一种特性很丰富的语言,如果你想用那些特性的话,那你就要学习一些东西。这也是把难题变简单的学费。虽然你要想把所有 Perl 能做的事情吸收还需要一些时间,但到你需要这些功能的时候你就会非常开心地发现 Perl 已经可以做这些事情了。
由于 Perl 的继承性,就算它只是用做数据归纳语言的时候也有丰富的特性,Perl 一开始就设计成可以浏览文件,扫描大量文本并且生成动态数据以及打印出这些数据的良好格式化的报表。不过,随后 Perl 就开始风行,于是它就成了可以操作文件系统,进程管理,数据库管理,进行 C/S 编程和安全编程,web 信息管理,甚至可以进行面向对象和面向功能的编程的语言。而且这些功能并非只是在 Perl 这边,每种新功能都和其它东西交流得很好,别忘了 Perl 从一开始就是设计成胶水语言的。
而且 Perl 并不仅仅只能黏合它自己的特性。Perl 是设计成可以用模块扩展的语言。你可以用 Perl 快速设计,编写,调试和部署 Perl 应用,并且你还可以在需要的时候很方便地扩展这些应用。你可以在其它语言里嵌入 Perl,而且你也可以在 Perl 里嵌入其它语言。通过模块输入机制,你可以把这些外部的扩展当做内置于 Perl 的特性。那些面向对象的外部库在 Perl 内部仍然保持面向对象的特征。
Perl 还在许多其它方面协助你。和严格的每次执行一条命令的命令文件和 shell 脚本不同的是,Perl 先把你的程序快速编译成一种内部格式。和其它任何编译器一样,这个时候还进行各种优化,同时把碰到的任何问题反馈给你。一旦 Perl 的编译器前端对你的程序表示满意了,它就把这些中间代码交给解释器执行(或者是给其它的能生成 C 或者字节码的模块后端)。听起来挺复杂,不过 Perl 的编译器和解释器干这些活效率相当高,我们的编译-运行-修改的过程几乎都是以秒计。再加上 Perl 的许多其他开发特性,这种快速的角色转换很适合做快速原型设计。然后随着你的程序的成熟,你可以逐步拧紧身上的螺母,减少散漫增强纪律。如果你做得好,Perl 也能帮你这个忙。
Perl 还可以帮你写更安全的程序。除了其它语言提供的典型的安全接口之外,Perl 还通过一种跟踪数据的机制给你提供预防意外安全错误的保护,这样就可以在灾害发生之前预防其发生。最后,Perl 还可以让你设置一个特殊的防护隔段运行那些来源不明的 Perl 代码,以此来杜绝危险操作。
不过,偏执一点儿说,Perl 帮你的大部分内容和 Perl 本身没有什么关系,而是和使用 Perl 的人有关。坦率地说,Perl 社区的人们可以说是地球上最热心的人了。如果 Perl 运动里面有那么一点点宗教色彩的话,那么这就是它的核心了。Larry 希望 Perl 社区像一小片天堂那样运转,目前看来他的愿望基本上是实现了。我们也请你为此做出自己的努力。
Perl之所以强大, 是因为有CPAN, CPAN上面有无数的开源模块, 从科学计算到桌面应用到网络等等各个方面都有大量的模块! 并且现在世界上也还有无数的人在向上面添加模块! 如果你想要用PERL实现某功能, 不用自己做, 在CPAN上面搜一搜, 多半都会得到已有的结果! CPAN("the Comprehensive Perl Archive Network"全面的 Perl 存档网络)是查找任何 Perl 有关的东西的中心仓库。它包含从整个 Perl 社区收集来的智慧:成百上千的 Perl 模块和脚本,相当于好几本书的文档,以及整个 Perl 发布。如果有东西是用 Perl 写的,而且这个东西很有用而且是自由的,那么它很有可能就在 CPAN 上。
(6)缺点:
也正是因为Perl的灵活性和“过度”的冗余语法,也因此获得了write-only的“美誉”,因为许多Perl程序的代码令人难以阅读,实现相同功能的程序代码长度可以相差十倍百倍。但Perl同样可以将代码书写得像Python或Ruby等语言一样优雅。
 二:

Perl 语法简介:


Perl 语法简介

原文网址:http://www.cncfan.com/html/?71_620.html
1.PERL变量

1.1.Perl变量分类

Perl变量分为标量变量,数组变量,关联数组变量3类.PERL的变量对大小写敏感,比如:An,AN,an是3个不同的变量,但是不同类型的变量可以使用同一个名字,比如:VAR可以是一个标量变量,同时也可以有一个数组变量也是VAR.这是因为PERL对每种类型的变量采用独立的名字空间,另外PERL的变量,可以存储任何类型的数据,无须像C那样声明变量,数据类型之间会自动转换,同时PERL变量也有全局与过程变量之分,默认是全局变量.

1.2.Perl变量

1.2.1 Scalar变量(标量变量)

标量变量只能存放一个值.PERL中的标量变量名总以字符$开头.下面的PERL语句把9这个值赋给标量变量$nine.把"BATI"赋给标量变量$name.然后用PRINT语句打印出来.

$nine=9;
$name='BATI';
print($name,'is',$nine);

把上述语句存为TEST01.PL文件,然后再在DOS环境下(WIN9X的MS-DOS方式也可以)运行:
C:/PERL5>PERL TEST01.PL(回车)
BATI is 9
(什么?很眼熟??是阿,PERL和我们常用C就是这么相似)


1.2.2 数组变量

数组是一次能够存储多个变量的表.它的赋值方法如下:

@weekdays=('Sun','Mon','Tue','Wed','Thu','Fri','Sat');

print (@weekdays); #输出为: SunMonTueWedThrFriSat
print ($weekdays[1]); #输出为: Sun
@work=@weekdays[1..5]; #此时,数组work的值为('Mon','Tue",...,'Fri');
@none=(); #表示空数组

数组变量名以@开头,[]内是数组的下标值,下标值从0开始.这与C依然很相似.
同样的在PERL中,如果只有数组名,而忽略下标的话,也会像C那样输出整个输出,比如:
第一个输出语句.
但请注意在输出Sun那一句时,当我们引用数组中某一个值的时候,我们不再使用@,而是使用$作为变量的开头,因为就单个值而言,它是一个标量变量,所以如此(这和C可不一样哦)当然你还得给出下标值.
在给数组work赋值的语句中,我们用到了SLICE初始化数组,你不必关心什么是SLICE,你只要记住这种形式就可以了,其实SLICE是表格的一部分,是官方的表示.
对数组的赋值是多种多样的.前面我们看到的都是用值对数组赋值,同样你也可以用变量或者另一个数组的值给数组赋值,比如:

@name=($firstname,@lastname);
@say=('He said',@saysomething);

以下是SLICE的例子:

@weekend=@weekdays[0,6]; #数组weekend的值为('Sun','Sat')
print(@weekdays[1..5,0,6]); #输出结果为'MonTueWedThuFriSunSat'

PERL还支持一种特殊构造符$#var,它是用来返回数组最后一个索引值.比如下面的语句利用$[构造符确定数组的第一个索引值,用$#var确定数组最后的索引值,然后显示整个数组:

for ($i=$[;$i<=$#buffer;$i++) { print $buffer[$i]; } 
上面语句与print @buffer;的输出结果是一样的.

1.2.3 标量与数组变量

表构造符(,)与顺序计值运算符(,)非常相似.因此,PERL调用哪一个运算符取决于命令文件运行时的具体情况,即文件正在使用数组还是标量值.PERL在数组表达式中调用表结构符, 在顺序计值中调用计值运算符.请考虑以下两个表达式:

@an_array=(1,2,3,4,5);
$a_scalar=(1,2,3,4,5);

第一个语句初始化一个数组,第二句把$a_scalar变量的值设为5,而且取消了前4个元素的赋
值作用.
再来看一个例子:

print $assoc{1,2};
@print $assoc{1,2};

第一句打印二维关联数组的一个元素值,而第二句打印一维数组的两个元素值.


1.2.4 关联数组变量

关联数组变量与数组变量很相似,都可以存储标量变量的表.它们的区别在于数组变量必须通过整数下标来引用数组元素, 而关联数组变量可以通过任何值作为下标而达到访问数组元素的目的.关联数组的下标我们称之为键值(Key),是一种索引值.下面我们通过一个例子来理解:

$ages{'Bob'}=35;
$ages{'Mary'}=25;
$,='';
print @ages{'Bob','Mary'};
print keys(%ages );
for $name(keys(%ages))
{
print "$name is $ages{$keys}/n";
}

程序把一个值赋给'$,'变量,这样以后的print语句的输出会受到影响,关于特殊变量'$,'我们将在以后介绍.PERL调用关联数组变量时,使用花括号{}括起键值.
@ages{'Bob','Mary'}在花括号内给出了键值,表示引用一个元素,此语句中有两个键值,表示引用数组的一部分,其结果应为(35,25)与($ages{'Bob'},$ages{'Mary'})语句的结果相同.
print keys(%ages)使用了keys运算符.其结果将返回关联数组的所有键值,组成一个表.%ages表示引用整个关联数组.
请注意循环语句中的print语句,在这里我们看到了在""(双引号)中插入变量的用法,这是非常有用的.在输出结果的时候,变量将被替换成变量的值作为输出的最终结果,这就是所谓的内插法.但是PERL不允许在''(单引号)中插入变量!!!!


2.PERL运算符

2.1 算数运算符

  Perl虽然在变量与数据类型都和C大不相同,然而它的运算符和C几乎相同,除了C的类型转换运算符type,指针引用运算符*ptr和结构成员选择符,其他C的运算符几乎完全出现在Perl里,Perl新增了几个新运算符,比如在字符处理方面.
  Perl到目前支持的算数运算符有一些几种:

+ 加法运算符
- 减法运算符
* 乘运算符 
/ 除运算符(只对浮点数运算)
% 取模运算符(只对整数运算)

下面给出Perl算数运算的一些实例:

$x=2.5;
$y=3;
print ($x+2*$y);
print (7/$y);
print int(7/$y);
print (7%$y);
print (7.5%$y);

Perl还支持递增和递减运算符:

++ 递加
-- 递减

Perl新增了乘方运算符:**,请看下面的例子:

$x=2**3; #2的3次方
$y=2**0.5; #2的平方根
$z=-2**-3; #结果是:-0.125

2.2 位运算符

  位运算符对二进制表达式的整数形式进行处理,运算结果为整数.如果位运算符的操作数是字符串或分数,Perl首先把它们转换成整数,并用32位长整数形式表示它们.Perl支持所有的C语言运算符:

| 位或运算符
& 位与运算符
. 位非运算符
<< 位左移运算符>> 位右移运算符

有关位运算符的详细内容,请参看C语言有关的内容,这里我们就不多讲了,只举几个例子:

$x=5;
$y=3;
print $x | $y; #结果是7(二进制表示:111)
print $x & $y;   #结果是1(二进制表示:001)
print $x << 2; #结果是20(二进制表示:10100) print $x>> 1; #结果是2(二进制表示:10)

2.3 比较运算符

 

  比较运算符的功能是比较两个操作数的值.Perl在进行比较运算前,会先将字符操作数转换为数字.Perl用专门的字符串比较运算符对纯字符进行表运算.

运算符 等价字符串 含义 
== 
!= 
> 
< 
>= 
<= 
<=> 
eq 
ne 
gt 
lt 
ge 
le 
cmp 
等于 
不等于 
大于 
小于 
大于等于 
小于等于 
不等于(结果带符号) 


2.4 逻辑运算符 逻辑运算符测试布尔表达式的值,其结果为真或假.Perl认为逻辑运算符的每个操作数都为布尔值(即真或假).Perl的逻辑运算符包括:

|| 逻辑或运算符;
&& 逻辑与运算符.

Perl按从左到右的顺序计算逻辑表达式.当逻辑或运算符的一个操作数为真,或者当逻辑与运算符的一个操作数为假时,Perl将终止逻辑表达式的计算.Perl利用这种短回路计值快速计算表达式的值.因此,这两个运算符也叫短回路AND和短回路OR.
  除了以上两个运算符,还有以下三种逻辑运算符:

! 负运算符
?: 条件运算符
, 顺序计值符

运算符!否定操作数的布尔值,相当于逻辑非.?:条件运算符,有3个操作数,表达形式为:

condition?true-result:false-result

下面的语句通过?:运算符,实现访问权限的区分:

$access=($user eq '流云'?'root':'guest');

顺序运算符(,)从严格意义上讲并不是逻辑运算符,因为它并不检查操作数的真假.Perl从左到右的计算逗号运算符,并返回最右边的操作数,都好运算符是从C延续出来的,具体使用可以参考C里的用法,这里我就不累述了.


2.5 字符运算符


由于Perl本身是为文本处理开发的.因此,它增加许多新的字符串运算符.Perl的字符串运算符包括:

. 字符连接运算符
x 字符串复制运算符
=~ 将一个变量绑定到模式匹配
!~ 将一个变量绑定到模式匹配,取非

前两个运算符比较简单.现在看看例子:

print 'C'.'a'.'l'x2; #输出结果将是: Call;

后两个运算符主要用于模式匹配,以后将会有关于模式匹配的具体讲解,这里就不多说了,我们来看看它们的例子,以了解它们的作用:

$text='今天下雨了';
print ($text=~/下雨/)?'今天下雨了':'今天没下雨';

我们看到的例子可以发现是否变量中是否包含我们所需要的字符串.


2.6 赋值运算符

赋值运算符和C语言的赋值运算符差不多,以下是各种赋值运算符:

= += -= *= /= %= |= &=
^= ~= <<=>>= **== .= x=



2.7 Lvalue

 在Perl和C语言中,lvalue表示赋值运算符左边的实体.也就是说,lvalue与变量一样,可以给它分配值.例如在Perl命令文件中不能向字符串赋值,如"Bob"=32这个语句就是错误的!因为"Bob"不是一个lvalue,但是如果对$Bob赋值,如$Bob=32,这个语句就是正确的!因为变量$Bob是一个lvalue.
  在Perl中,任何有意义的lvalue只能表示一个实体.例如下面的第一个语句列出了表的值(就是数组的值,只不过说法不一样罢了),@color就是一个lvalue,第二个语句中,将表的值赋值给3个标量变量,3个变量就是lvalue:

  @color=($r,$g,$b);
($r,$g,$b)=@color;

  Perl的赋值运算符对表进行处理时,可以不对整个表进行处理,而只针对表的某一个或者几个元素进行赋值:

  @times[2,5,9]=(20,40,10);

  下面的语句把表的前2个值赋给两个标量,其余部分赋给另一个表:

($arg1,$arg2,@reset)=@ARGV;

2.8 表运算符

 Perl包括以下一些表运算符,而C没有:

, 表构造符
.. 范围运算符
x 表复制运算符

  前面我们在介绍"标量与数组变量"时,已经设计到了构造符(我认为叫分隔符,更容易理解些)范围运算符我们在用来创建数组下标范围时,也用到过!不过,请注意它的功能还远不止这个,它还可以用来作为返回从左边操作数到右边操作数之间顺序整数的范围(包括左右两边的操作数).命令文件通常同时利用范围运算符创造一个连续整数表:

@digits=0..9;

这样我们就创造了一个表,其值为(0,1,2,3,4,5,6,7,8,9)
  表复制运算符是一个非常有趣的东东,我们来看一个例子:

@copy_3=(1,2,3)x3;

这个表有9元素,其值为(1,2,3,1,2,3,1,2,3)怎么样?很方便吧!

2.9 文件运算符


Perl大大扩展了文件处理运算符.Perl至少有27个运算符在不打开文件的情况下,能够测试文件的信息,但是很不幸,由于Perl在最初是UNIX的工具,所以绝大多数的运算符在我们流行的平台上:WIN9X/NT系统无法使用.但万幸的是不是全部还有4个运算符绝对可用,而且功能不错哦!一下就是那4个运算符:

-d 测试文件是不是一个目录;
-e 测试文件是否存在;
-s 测试文件的大小;
-w 测试文件是否是可写的;

  前两个运算符返回的是布尔值(即真或假),第3个运算符返回文件的大小(以字节作为返回方式).下面是
使用方法:

if(-e 'perl.exe')
{
print 'File size is:'-s'perl.exe';
}
else
{
print 'Can/'t find perl.exe/n';
}
(-w 'SomeFile')||die "Cannot write to SomeFile/n";



原创粉丝点击