Skip to Content
Perl语言入门
book

Perl语言入门

by Randal L. Schwartz, brian d foy, Tom Phoenix
August 2018
Beginner to intermediate
382 pages
7h 14m
Chinese
Southeast University Press
Content preview from Perl语言入门
习题答案
331
my
来声明的
$pos
变量是
for
循环作用域内的私有变量,初始值为
-1
。这里
我们就不再卖关子了,直接告诉你它的功能是存储在较长的字符串里子字符串的
出现位置。
for
循环的“测试”和“递增”部分都是空的,所以这是个无穷循环
(当然,我们终究会脱离循环的,这次是用
last
)。
循环主体的第一行语句会从位置
$pos + 1
开始寻找子字符串的出现位置。也就
是说,在循环第一次执行,
$pos
还是
-1
的时侯,会从位置
0
(字符串开头)
开始寻找。接着把子字符串的出现位置存入
$pos
。如果它是
-1
,就不必再执
for
循环了,所以我们会用
last
来脱离循环。如果
$pos
不是
-1
,我们就会
将位置存进
@places
,然后再进行下一次循环。这时,
$pos + 1
会让程序在继续
寻找子字符串时,从上次出现的位置的后面一格开始。如此一来,我们得到了想
要的解答,一切都又恢复到了原来的平静。
如果你不想使用这种奇妙的
for
循环,也可以用下面的写法来得到相同的结
果:
{
my $pos = -1;
while (1) {
... #
循环部分和上面代码中的相同
}
}
外层的裸块限制住了
$pos
的作用域。你不一定得这么做,但在尽可能小的作用
域内声明变量通常是比较好的做法。这么做能减少程序里同时“活着”的变量,
让我们降低之后不小心将
$pos
这个名字用到别处的可能性。基于同样的道理,
如果不将变量声明在较小的作用域里,通常就应该给它取较长的名字,以避免 ...
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

计算机科学导论:跨学科方法

计算机科学导论:跨学科方法

罗伯特 塞奇威克, 凯文 韦恩
Perl语言入门(第8版)

Perl语言入门(第8版)

Randal L. Schwartz, brian d foy, Tom Phoenix

Publisher Resources

ISBN: 9787564177911