2014-07-07 40 views
4

我對Perl很新,所以如果問題不大,請原諒我。爲什麼Perl中的反引號操作符在沒有Windows引號的情況下無法正常工作?

在工作中,我有一個任務來創建一個腳本,當其他開發人員錯過任務的截止日期時,腳本會發出電子郵件。由於整個事情必須在Windows上運行,使用Strawberry Perl,我已經使用windows命令date /T來執行日期檢查。我呼籲外部命令相當多,使用反引號操作符,但在這種特殊情況下,反引號是行不通的:

my $date = `date /T`; 

輸出:

date: invalid date `/T' 

使用一些額外的報價固定

my $date = `"date /T"` 

輸出:

Mon 07/07/2014 

我的問題是:爲什麼呢?

我會得到,如果其他帶反引號的外部電話將工作相同,但這是唯一我必須這樣調用,使其工作。

+1

它適用於我沒有引號。 – ooga

+0

當你排除引號(除了「不工作」)之外會發生什麼? – AKHolland

+0

我正在將其作爲腳本運行。也很抱歉錯過了「不工作」的輸出。我以某種方式認爲這很明顯。 Noob錯誤。 – imkort

回答

5

您似乎意外地使用了date的Cygwin/GnuTools版本。

在Windows命令提示符下,date /T給出當前時間。
這不是一個可執行文件,這是一個命令

但是,在Cygwin/GnuTools環境下運行date /T給出date: invalid date '/T'
這是因爲環境1)無法看到Windows date命令2)發現在他們的PATH環境變量date可執行並運行它來代替。

相關問題