我正在運行此perl腳本(開放源代碼項目的一部分,不是由我寫的),它死在我身上。下面是代碼的相關部分:當我嘗試執行日期時出錯
$enddate = `date`;
我收到的錯誤:
Can't exec "date".
是否與Perl版本的問題嗎?或殼?
我正在運行此perl腳本(開放源代碼項目的一部分,不是由我寫的),它死在我身上。下面是代碼的相關部分:當我嘗試執行日期時出錯
$enddate = `date`;
我收到的錯誤:
Can't exec "date".
是否與Perl版本的問題嗎?或殼?
當Perl的被要求執行一個外殼命令(無論是通過exec
,system
,readpipe
/qx
/反引號或open
),以及外殼命令包含除空白字符其他無殼元字符,Perl將執行該命令本身,而不是調用一個shell。
如果Perl無法執行程序並啓用警告,Perl會發出警告說程序無法執行,以及原因。
$ perl -we'`non-existent`'
Can't exec "non-existent": No such file or directory at -e line 1.
您似乎誤述了您收到的消息。您遺漏的部分是date
無法執行的原因。例如,「沒有這樣的文件或目錄」就表示程序在您的路徑中找不到。
無論如何,真的不需要執行date
。以下是等效的:
use POSIX qw(strftime);
my $enddate = strftime('%a %b %e %H:%M:%S %Z %Y', localtime()) . "\n";
您正在使用哪種環境?系統?你真的需要執行一個外部命令來獲取日期嗎? – sidyll
「不能執行」日期「''後,你不會收到錯誤消息嗎?是什麼版本的Perl?你的PATH,SHELL和其他相關的環境變量是什麼?你可以使用相同的環境從shell運行'date'嗎? – jcaron
'$ ENV {'PATH'}'會告訴你它在哪裏尋找'date'命令。 –