我是 Perl 的新手,目前正试图理解提到的错误消息。
我有这段代码(仍然主要用于测试pourposes)
#!/usr/bin/perl
use strict;
use warnings;
my %info = (autor => "Karryanna", jazyk => "cs");
vec([%info]);
sub vec
{
my ($hashref) = @_;
print $hashref->autor . "\n";
}
当我尝试运行它时,它会给出此错误消息
Not enough arguments for vec at test.pl line 8, near "])"
当我尝试用谷歌搜索它时,我发现这个网站让我觉得在子例程调用之前加上一个&符号就足够了。我试过了,它确实有帮助。
但是,当我后来遇到另一个问题时,谷歌搜索把我带到了这个 SO question。关键是答案指出
您应该调用不带 & 的子程序,例如 populate(...),除非您特别想覆盖子程序的原型。如果你不知道原型是什么,就不要使用 &。
我完全不知道 Perl 上下文中的原型是什么。那么 - 现实是什么样的?我应该只使用 & 还是有其他可能更“干净”的解决方案?
谢谢!
(顺便问一下,如果我可能会问一点 OT 问题——我真的应该在调用它之后定义子程序吗?这对我来说似乎真的很不自然,但是,我已经发现恢复顺序会使编译器抱怨)