while
类似 C 语言中的 while 语句:
while (condition) {
#condition 为真时执行
}
until 可以理解为改装过的 while 循环:
until (condition) {
# condition 为假时执行
}
# 即:
while (!(condition)) {
# something happens
}
因此,任意一个 until 循环都可以等价改写为 while 语句。
for 语句类似 C 语言中的 for 控制,大致的结构如下:
for (init-statement; condition; statement) {
# condition 为真时执行
}
for 语句实际上也可以是 while 语句的一种变体:
# init-statement;
while (condition) {
# statement
}
for 语句中的 init-statement、condition、statement 都是可以省略的,但是分号必需保留,这和 C 语言中的语法是一致的。
for (;;) {
# 一直执行,直到代码块内中断
}
# 更常见的写法是使用 while
while (1) {
# 一直执行,直到代码块内中断
}
for 的另一种语法形式是:
for (list) {
# do something
}
打印列表:
my @words = qw/bedrock quartz mica glass/;
for (@words) {
# 逐个输出列表中的内容
say;
}
foreach 语句和 for 语句实际上是等价的(对 Perl 解析器来说是如此,这个说法出自《Perl 语言入门(第六版)》,是否真的如此我没有考证过,既然书里说是,那就是吧)
my @words = qw/bedrock quartz mica glass/;
foreach (@words) {
say;
}
上面代码同样是打印列表内容,不能说十分相似,只能说一模一样。
如果需要自定义循环变量的名称,可以采用如下写法:
foreach my $varname (@words) {
say $varname;
}
这里用 for 也是一样的:
for my $varname (@words) {
say $varname;
}
foreach 甚至也能支持 (init; condition; statement) 这样的语法结构(毕竟书里说是一样的了嘛~),但是应该不会有人这么写吧不会吧。。。