Perl 可以:
perl -le '$d=1; while(1){ $d/=2 and ++$i or last } print "i=$i"'
Run Code Online (Sandbox Code Playgroud)
但不是:
perl -le '$d=1; $d/=2 and ++$i or last while 1; print "i=$i"'
Run Code Online (Sandbox Code Playgroud)
这导致:
Can't "last" outside a loop block at -e line 1.
Run Code Online (Sandbox Code Playgroud)
这是一般情况还是此特定语句中的某些内容阻止了last此处?没有perl的使用能够做到last语句修饰(while/ until/for在早期版本在结束)?我现在在 v5.26 上进行了测试,并且没有现成的旧版本。
并非所有语句修饰符。
$ perl -M5.010 -e'last while 1; say "ok"'
Can't "last" outside a loop block at -e line 1.
$ perl -M5.010 -e'last until 0; say "ok"'
Can't "last" outside a loop block at -e line 1.
$ perl -M5.010 -e'last for 1; say "ok"'
ok
Run Code Online (Sandbox Code Playgroud)
众所周知,它在特殊情况下do BLOCK while EXPR;也不起作用。
$ perl -M5.010 -e'do { last } while 1; say "ok"'
Can't "last" outside a loop block at -e line 1.
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它适用于for而不是其他人。
不是新的。
$ for v in 10 12 14 16 18 20 22 24 26 28 30 32; do
printf '5.%s:\n' $v
5.${v}t/bin/perl -M5.010 -e'last while 1; say "ok"'
done
5.10:
Can't "last" outside a loop block at -e line 1.
5.12:
Can't "last" outside a loop block at -e line 1.
5.14:
Can't "last" outside a loop block at -e line 1.
5.16:
Can't "last" outside a loop block at -e line 1.
5.18:
Can't "last" outside a loop block at -e line 1.
5.20:
Can't "last" outside a loop block at -e line 1.
5.22:
Can't "last" outside a loop block at -e line 1.
5.24:
Can't "last" outside a loop block at -e line 1.
5.26:
Can't "last" outside a loop block at -e line 1.
5.28:
Can't "last" outside a loop block at -e line 1.
5.30:
Can't "last" outside a loop block at -e line 1.
5.32:
Can't "last" outside a loop block at -e line 1.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |