perl if elsif返回-编译错误

perl if elsif返回-编译错误,perl,if-statement,return,Perl,If Statement,Return,我有以下子例程产生此错误,但我不明白原因: C:…pl第44行,靠近“May”的main::formatdate没有足够的参数 由于编译错误,C:…pl的执行被中止 代码: 你应该读书 您可以通过更改以下内容来解决此问题: sub formatdate($month) { 对下列事项: sub formatdate { my $month = shift; 定义格式日期的另一种方法是 sub formatdate { my($month) = @_; 此外,您可能希望更新pri

我有以下子例程产生此错误,但我不明白原因:

C:…pl第44行,靠近“May”的main::formatdate没有足够的参数 由于编译错误,C:…pl的执行被中止

代码:

你应该读书

您可以通过更改以下内容来解决此问题:

sub formatdate($month) {
对下列事项:

sub formatdate {
    my $month = shift;

定义
格式日期的另一种方法是

sub formatdate {
  my($month) = @_;
此外,您可能希望更新print语句以包含换行符

print formatdate("May") . "\n";
阅读是修复子程序所需的建议

然而,我想进一步建议您,只要您有像您正在使用的键/值对,就要识别哈希的用法。在下面的代码中,我手动指定了散列,但也可以非常轻松地使用月份名称列表构建散列:

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.

好啊输入的Thx。
.05.