2016-04-05 32 views
1

私は、月の名前をとるべきであるPerlサブルーチンを書いています。そうでない場合は元の引数を返します。変数はif文の明示的なパッケージ名を必要とします

sub convert_month_to_number { 
my ($input) = @_; 
my @month_names = qw/January February March April May June July August September October November December/; 
my @month_names_short = qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/; 
for (my $i = 0; $i < scalar(@month_names); $i = $i + 1){ 
    print "$month_names[$i]\n"; 
    if ($input == $month_names[$i]{ 
     return $i; 

    } 
} 

return $input; 
} 

}

パドレでこれをコンパイルするときしかし、私はエラーが表示されます。

syntax error at additionalscripts.pl line 16, near "}" 
Global symbol "$input" requires explicit package name at additionalscripts.pl li 
ne 19. 
syntax error at additionalscripts.pl line 20, near "}" 
Execution of additionalscripts.pl aborted due to compilation errors. 

私はなぜこれが起こっている正確にわからないんだけど、私はすでに$を宣言した方法を検討上にグローバル変数として入力します。どんな助けでも大歓迎です。私は現在、Windows上でPerl 5.010を使用しています。

+1

OT:eq' 'と文字列を比較。 – Biffen

+1

'if'行に') 'がありません。 – Biffen

+0

パーサーがスタックしているために残りが発生するため、最初の行を除くすべての行を無視します。 ** addalscripts.pl 16行目の構文エラー。「}」**これを修正してください。 –

答えて

0

あなたのコードにはいくつかのエラーがありましたが、これはクリーンアップしました。

my @test = qw(Foo January Bar); 
say convert_month_to_number($_) foreach @test; 

sub convert_month_to_number { 
    my ($input) = shift; 
    my @month_names = qw/January February March April May June July August September October November December/; 
    my @month_names_short = qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/; 

    for (my $i = 0; $i < @month_names; $i++){ 
     if ($month_names[$i] eq $input){ 
      return $i; 
     } 

    } 
    return $input; 

}

関連する問題