Skip to Content
Perl语言入门(第8版)
book

Perl语言入门(第8版)

by Randal L. Schwartz, brian d foy, Tom Phoenix
October 2022
Beginner to intermediate
390 pages
7h 5m
Chinese
Southeast University Press
Content preview from Perl语言入门(第8版)
文件测试
229
使用栈式写法时,靠近文件名的测试会先执行,次序为从右往左。不过通常测试次序
不是很重要。
对于复杂情况来说,这种栈式文件测试特别好用。比如我们想要列出可读、可写、可
执行并隶属于当前用户的所有目录,只需要按恰当的顺序摆上这些测试操作符:
use v5.10;
if (-r -w -x -o -d $filename) {
print "My directory is readable, writable, and executable!\n";
}
对于返回真或假值以外的文件测试来说,栈式写法并不出色。像下面的例子,我们原
本想要确认某个小于
512
字节的目录,可实际上会出问题:
use v5.10;
if (-s -d $filename < 512) { #
错啦!千万不要这么做
say 'The directory is less than 512 bytes!';
}
按其内部的实现方式展开,我们可以看到上面的例子实际上相当于如下的写法,整个
合并起来的文件测试表达式成了比较运算的一个操作数:
if (( -d $filename and -s _ ) < 512) {
print "The directory is less than 512 bytes!\n";
}
-d
返回假时,
Perl
将假值同数字
512
作比较。比较的结果就变为真,因为假等效
为数字
0
,而
0
永远小于
512
。为了避免这种令人困惑的写法,还是用分开的方式写
比较好,这对将来维护程序的人来说也更友善: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉
Perl语言入门

Perl语言入门

Randal L. Schwartz, brian d foy, Tom Phoenix

Publisher Resources

ISBN: 9787576602036