【发布时间】:2012-08-09 09:27:04
【问题描述】:
我在 perl 下面有一个函数
sub create_hash()
{
my @files = @_;
foreach(@files){
if(/.text/)
{
open($files_list{$_},">>$_") || die("This file will not open!");
}
}
}
我通过传递一个数组参数来调用这个函数,如下所示:
create_hash( @files2);
数组中有大约 38 个值。 但我收到编译错误:
Too many arguments for main::create_hash at ....
我在这里做错了什么?
我的 perl 版本是:
This is perl, v5.8.4 built for i86pc-solaris-64int
(with 36 registered patches, see perl -V for more detail)
【问题讨论】:
-
脱掉
()? (如sub create_hash { .. }) -
如果你调用你的函数会发生什么:create_hash(files2); (不带“@”符号)
-
@ pst 如果我删除它们错误是: Array found where operator expected at process.pl line 71, at end of line (Do you need to predeclare create_hash?) process.pl line 71的语法错误,靠近“create_hash @files2”
-
顺便说一句,5.8.4 是一个 真正 古老的 Perl 版本(尽管这与您的问题无关)。你真的应该考虑安装一个更新的版本。 perlbrew 可以提供帮助。
-
使用 perlbrew,您无需成为管理员即可安装新版本的 Perl 供您自己使用。您只需要一个合适的 C 工具链和足够的磁盘空间。
标签: perl