我是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";
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,它会给出此错误消息
Not enough arguments for vec at test.pl line 8, near "])"
Run Code Online (Sandbox Code Playgroud)
当我试图google它时,我发现这个网站让我觉得在使用&符号的子程序调用之前就足够了.我试了一下它确实有所帮助.
然而,当我后来遇到另一个问题时,谷歌搜索带我去了这个问题.重点是答案说明
你应该调用没有&的子程序,例如populate(...),除非你特别想要覆盖sub的原型.如果您不知道原型是什么,请不要使用&.
我完全不知道Perl上下文中的原型是什么.那么 - 现实是什么样的?我应该使用&或者还有其他可能更"干净"的解决方案吗?
谢谢!
(顺便说一下,如果我可能会问一些OT问题 - 我应该在调用之后真正定义子程序吗?对我来说这似乎很不自然,但是,我已经发现恢复顺序会让编译器抱怨)
perl ×1