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

你要么有两个命名的函数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 回答