3

私の perl プログラムではuse POSIX qw( strftime );、次のようにライブラリを使用して unixtimestamp から日付への変換を実行しています。

my $dt = strftime("%m/%d/%y", localtime($fields[0]));

変換は期待どおりに行われていますが、次のエラーが発生しています。

 Prototype mismatch: sub main::strftime ($\@;$) vs none at 
 /usr/lib/perl5/5.8.5/Exporter.pm line 67.
 at /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/POSIX.pm line 19

その理由とそれを取り除く方法を教えてくれる人はいますか?

4

2 に答える 2

10

2 つの関数に名前が付けられているかstrftime(ただし、別の警告も表示される可能性があります)、strftime宣言される前に使用されています。


私は常にインポートを明示的に指定しているので、最初の問題に遭遇することはありません。

 use Date::Format qw( );
 use POSIX        qw( strftime );
于 2013-06-19T09:22:41.343 に答える
1

宣言/定義される前に関数を使用すると、同じエラーに直面しました。回答はすでに受け入れられているため、さらに多くの理由が考えられますが、これは誰かを助けるかもしれません.

sub func1{
 func2();
}

sub func2{
}

解決策は、単純にfunc2をfunc1の前に移動することでした。

sub func2{
}

sub func1{
 func2();
}
于 2014-11-04T06:16:12.383 に答える