为什么perl会抱怨一个";我的";当这条线没有一条时?
我有一段代码,在给定一个列表的情况下,尝试多次调用一个函数。我有一个为什么perl会抱怨一个";我的";当这条线没有一条时?,perl,variables,compiler-warnings,Perl,Variables,Compiler Warnings,我有一段代码,在给定一个列表的情况下,尝试多次调用一个函数。我有一个for()循环,然后在循环中调用函数。但是在函数调用的过程中,我遇到了一个奇怪的错误: [Thu Aug 8 08:31:37 2013] x.cgi: "my" variable $_ masks earlier declaration in same statement at /usr/home/x/public_html/cgi-bin/x.cgi line 310. [Thu Aug 8 08:31:37 2013]
for()
循环,然后在循环中调用函数。但是在函数调用的过程中,我遇到了一个奇怪的错误:
[Thu Aug 8 08:31:37 2013] x.cgi: "my" variable $_ masks earlier declaration in same statement at /usr/home/x/public_html/cgi-bin/x.cgi line 310.
[Thu Aug 8 08:31:37 2013] x.cgi: "my" variable $_ masks earlier declaration in same statement at /usr/home/x/public_html/cgi-bin/x.cgi line 310.
这个错误很奇怪,因为行中根本没有my
这是我的代码,用Perl5运行
子cgiPrintForm{
我的$fh=班次;
关于(qw!betatest订阅fname lname职位部门公司地址1地址2城市省邮政编码国家电话传真电子邮件hearofus评论!)
{
打印$fh“\n$\”,如果定义了参数($\),则打印参数($\);
}
打印$fh
\n引用方:,引用方(),
\n远程主机:,远程主机(),
\n远程IP:,远程地址(),
\n远程标识:,远程标识(),
“\n用户代理:”,用户代理(),“\n”;
}
显然,Perl的一些魔力出了问题,自动的my
把我搞砸了
此错误消息通常表示您在发生错误的行之前忘记了分号。我会在该子定义之前立即查找可能的错误
@阿蒙的评论是正确的;我在另一个部分中遇到了一个直到此时才被检测到的错误(它是缺少引号或大括号之类的东西)。使用
strict
和warnings
您的代码片段编译得很好(即使在strict下)。此错误消息通常表示您在发生错误的行之前忘记了分号。我会在这个子定义之前查找可能的错误。@amon就是这样,谢谢