我有一個perl文件,它調用批處理文件來安裝第三方程序。捕獲從Perl批處理文件返回的錯誤代碼
Main.pl
system ("Installer.bat");
print "Error code is $? \n";
Installer.bat
@echo off
installer.exe
echo errorlevel is %errorlevel% > logfile
exit %errorlevel%
錯誤代碼3010是通過批處理文件返回,它表明,需要重新啓動。 但是,perl模塊打印49664.我認爲它應該打印3010.有人可以解釋這是如何工作的?我想獲取我的Perl代碼中需要重新啓動的錯誤代碼,然後執行一些清理工作並從perl模塊重新啓動計算機。
以下相關問題也不清楚。 - Windows批處理文件只有255個錯誤代碼,那麼3010如何作爲錯誤代碼返回? - This place表明我們需要將錯誤代碼右移8位以獲取本地錯誤代碼。所以如果我右移49664 8,我得到194(這仍然不像3010)。不過,我也注意到,3010國防部256 = 194
你試過[$ {^ CHILD_ERROR_NATIVE}](http://perldoc.perl.org/perlvar .html)或[Win32 :: Process](http://search.cpan.org/~jdb/Win32-Process-0.14/Process.pm)? – Mikel 2011-02-25 10:56:28
你對3010 mod 256的評論主要回答你自己的問題。你現在得到8位答案。因此,Oesor的回答可能是你需要做的,以獲得全部價值。 – 2011-02-25 15:19:22