如果我写这段代码:
for $i (1..3) {
$j = $i;
print $j;
}
Run Code Online (Sandbox Code Playgroud)
有用.
这段代码将起作用:
$code = "
for $i (1..3) {
#### $j = $i;
print $j;
}
eval $code
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试这样写:
$code = "
for $i (1..3) {
$j = $i;
print $j;
}
eval $code
Run Code Online (Sandbox Code Playgroud)
它会发现错误,为什么?谁能帮我?
第二个纯粹是偶然的.您的双引号字符串正在插入空值$i,$j并且您实际上正在运行
for (1..3) {
### =
print ;
}
Run Code Online (Sandbox Code Playgroud)
巧合的是因为如果你没有命名变量for就会分配$_,并默认print打印$_.删除注释标记时,单独的等号会导致语法错误.
如果你曾经使用strict它会阻止你首先编译破坏的代码,如果你已经使用warnings它,至少会警告你使用未初始化的变量$i和$j字符串插值.