2013-06-19 27 views
2

在我的perl程序正在使用use POSIX qw(strftime);庫如下執行unixtimestamp到日期轉換,原型不匹配:子主:: strftime的

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 

有沒有人指導我是什麼原因以及如何擺脫它?

回答

8

您可能有兩個函數名爲strftime(但您可能還會有其他警告),或者您在聲明之前使用了strftime


我總是明確指定我的導入,所以我從不碰到第一個問題。

use Date::Format qw(); 
use POSIX  qw(strftime); 
+0

在腳本的頂部,我使用了「使用POSIX qw(strftime)」庫,並在腳本的中間使用了「strftime」函數。 – Mari

+0

正如你所說我已經使用「使用Date :: Parse; 使用Date :: Format」庫也..是否有問題? – Mari

+0

是的,謝謝你。我用過Date :: Parse;使用Date :: Format並不是必要的。我評論過他們,錯誤消失了。 – Mari

0

我所面對的同樣的錯誤,當我其被宣告/定義前使用的功能。 雖然可以有更多的理由,因爲答案已被接受,這可能有助於某人。

sub func1{ 
func2(); 
} 

sub func2{ 
} 

解決方式是前FUNC1移動FUNC2

sub func2{ 
} 

sub func1{ 
func2(); 
}