我有一個代碼片段:
my @array=("abc","def", "ghi");
print "I am testing exit code\n";
grep /lan/, @array;
if ($?) {
print "status is 0\n";
}
else {
print "Status is 1\n";
}
我在輸出中得到“狀態為 1”,但我想要“狀態為 0”。據我了解,在 中@array,未找到“lan”,因此退出狀態必須為非零,因此應列印“status is 0”。
為什么 Perl 沒有給出正確的退出代碼?如果我按照上面的理解錯了,請對退出代碼理論給出一個正確的想法?
uj5u.com熱心網友回復:
那是對$的濫用嗎?特殊變數。當您通過、反引號等執行外部命令時,您只會檢查該變數。有關詳細資訊,請參閱錯誤變數。system
在您的代碼中,grep是 Perl 內置函式;它不應與同名的grep unix 實用程式混淆。
您可以檢查回傳狀態,而不是嘗試檢查退出狀態:
use warnings;
use strict;
my @array=("abc","def", "ghi");
print "I am testing array\n";
if (grep /lan/, @array) {
print "lan is in array\n";
}
else {
print "lan is not in array\n";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/450428.html
