我有以下子程序产生此错误,但我不明白为什么:
主要:: formatdate在C处没有足够的参数:... pl第44行,靠近“”May“)” 执行C:...由于编译错误而中止。
代码:
sub formatdate($month) {
if ($month eq "Jan") {return ".01.";}
elsif ($month eq "Feb") {return ".02.";}
elsif ($month eq "Mar") {return ".03.";}
elsif ($month eq "Apr") {return ".04.";}
elsif ($month eq "May") {return ".05.";}
elsif ($month eq "Jun") {return ".06.";}
elsif ($month eq "Jul") {return ".07.";}
elsif ($month eq "Aug") {return ".08.";}
elsif ($month eq "Sep") {return ".09.";}
elsif ($month eq "Oct") {return ".10.";}
elsif ($month eq "Nov") {return ".11.";}
elsif ($month eq "Dec") {return ".12.";}
else {return "N/A";}
}
print formatdate("May");
答案 0 :(得分:2)
答案 1 :(得分:0)
定义formatdate
的另一种方法是
sub formatdate {
my($month) = @_;
此外,您可能希望更新print语句以包含换行符
print formatdate("May") . "\n";
答案 2 :(得分:0)
阅读perlsub
是修复子程序所需的建议。
但是,我想进一步建议您在拥有像您一样使用的键/值对时识别哈希的使用。在下面的代码中,我手动指定了哈希,但是也可以使用月份名称列表非常容易地构建哈希:
use strict;
use warnings;
sub formatdate {
my $month = shift;
my %monthcode = qw(
Jan .01.
Feb .02.
Mar .03.
Apr .04.
May .05.
Jun .06.
Jul .07.
Aug .08.
Sep .09.
Oct .10.
Nov .11.
Dec .12.
);
return $monthcode{$month} || 'N/A';
}
print formatdate("May");
输出:
.05.