http://www.cnblogs.com/agostop/archive/2012/04/03/2431548.html
使用perl調用外名命令有很多方法,這裏就不詳細講解。
如有shell腳本a.sh
#!/bin/bash
echo "script out put"
exit 2
有perl腳本test.pl調用a.sh
#!/bin/perl -w
$output = qx(/usr/local/a.sh);
$exitcode = $?;
print "output = " . $output;
print "exitcode = " . $exitcode;
執行此perl腳本./test.pl
你會發現輸出的內容爲
output = script out put
exitcode = 512
明顯就不是你所期望的結果。輸出應該是
output = script out put
exitcode = 2
這纔是我們期待的。
原因是,perl內部$?的返回值,會將shell的值乘以8,我們給他除以8,便可以解決。
#!/bin/perl -w
$output = qx(/usr/local/a.sh);
$exitcode = $? >>8;
print "output = " . $output;
print "exitcode = " . $exitcode;
再次運行腳本你會發現OK了。