繁体   English   中英

为什么Perl评估会出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM