淘先锋技术网

首页 1 2 3 4 5 6 7

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-statementconditionstatement 都是可以省略的,但是分号必需保留,这和 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) 这样的语法结构(毕竟书里说是一样的了嘛~),但是应该不会有人这么写吧不会吧。。。