Perl'de system()
çağrılarını yaptığımda, genellikle dönüş kodunu perldocs'a göre incelerim. Eh, öyle düşündüm. Çoğu zaman $rc!=0
benim için yeterli. Son zamanlarda apache altında .cgi komut dosyalarını çalıştırırken system()
çağrıları ile ilgili sorun vardı iki kişi burada yardımcı oldu. Ben $rc
my $rc = system(...);
arasında incelemek için talimat ve
system()
docs onları bağladı. Sonra daha yakından baktı ve belgeler gerçekten
$rc
ancak bunun yerine yaklaşık
$?
bahsetmiyoruz fark edilmesini ve biraz mahcup hissettim ve şu soru ortaya çıktı:
system(...);
if ($? == -1) {
print "failed to execute: $!\n";
}
elsif ($? & 127) {
printf "child died with signal %d, %s coredump\n",
($? & 127), ($? & 128) ? 'with' : 'without';
}
else {
printf "child exited with value %d\n", $? >> 8;
}
ve:
arasında bir fark var mımy $rc = system(...);
if ($rc == -1) {
print "failed to execute: $!\n";
}
elsif ($rc & 127) {
printf "child died with signal %d, %s coredump\n",
($rc & 127), ($rc & 128) ? 'with' : 'without';
}
else {
printf "child exited with value %d\n", $rc >> 8;
}
Veya, kısaca, system()
için $?
eşit $rc
mı?
system, wait ve $? belgelerine baktım ama bana göre çok açık değil. Son 15 yılda $rc
kullanarak yanlış mı yaptım?
için '$' şansı yoktur rc' 'sen etrafında almak önce sana değişen $? bu değeri kullanarak. – tadman
Teşekkürler @tadman. Yorumunuz için de geçerli olan kabul edilen cevaba bir yorum ekledim. '$ Rc' kullanmak bana daha temiz bir yol gibi görünüyor. – PerlDuck