[英]why Perl eval get errors
如果我写这段代码:
for $i (1..3) {
$j = $i;
print $j;
}
有用。
此代码将起作用:
$code = "
for $i (1..3) {
#### $j = $i;
print $j;
}
eval $code
但是,如果我尝试这样写:
$code = "
for $i (1..3) {
$j = $i;
print $j;
}
eval $code
它会捕获错误,为什么? 谁能帮我?
第二个是纯粹出于偶然。 您的双引号字符串正在插入$i
和$j
空值,并且您实际上正在运行
for (1..3) {
### =
print ;
}
巧合的是因为如果您不命名变量, for
会分配给$_
,而print
默认会打印$_
。 当您删除注释标记时,孤立的等号引起语法错误。
如果您使用strict
那么它首先将阻止您编译损坏的代码;如果您使用了warnings
则它至少会警告您有关在字符串插值中使用未初始化的变量$i
和$j
警告。
您缺少报价:
$code = '
for $i (1..3) {
$j = $i;
print $j;
}';
eval $code;
和“单引号”在此处是必须的,以便在eval
调用之前不扩展变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.