2013-04-30 16 views
0

我無法理解執行exe的Perl腳本的一部分。使用open()在Perl中執行一個exe文件?

open(SYSTEM, "$appl 2>&1 |") || die "$!: $appl"; 

根據this我可以理解,它正在執行一個exe(可變$appl店的exe其ARGS沿着路徑),但我不明白的部分2>&1。 AFAIK它不是我們exe所要求的arg,所以它必須是一些標準的約定。任何想法是什麼? PS:我們的Perl有點舊,因此open()的語法較老。

+1

可能的重複[在bash shell中,什麼是「2>&1」?](http://stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21) – 2013-04-30 09:30:51

回答

3

你可以看到的簡要說明什麼2>&1在這裏:In the shell, what does " 2>&1 " mean?

基本上它是告訴命令行重定向任何錯誤消息EXE提高到標準輸出whe重新perl腳本可以拿起輸出。

沒有這個,或者從命令行運行EXE時,通常可能會將錯誤引導到單獨的輸出(STDERR),以便將信息消息出現(STDOUT)。

+0

謝謝吉姆。從你的鏈接回答這個問題真棒! – 2013-04-30 09:24:51

+0

非常歡迎您。謝謝。 – Jim 2013-04-30 11:29:28

2

它重定向STDERRSTDOUT

在程序啓動,與 流標準輸入,標準輸出,和stderr關聯的整數文件描述符0,1,2

Unix File Descriptors

+0

謝謝阿倫,明白了! :) – 2013-04-30 09:25:15