Używam Perla 5.10.1 na Ubuntu 11.04. Chcę, aby Perl wykonywał skrypt powłoki i kończy pracę z tym samym kodem, który kończy skrypt powłoki. Ale to nie działa dla mnie ...Uzyskiwanie Perla w celu zwrotu poprawnego kodu wyjścia
system($runCmd) or die("Failed to run \"$runCmd\": $!");
I potwierdziły, że uruchomienie „$ runCmd” sam zwraca kod zakończenia 255, ale „die” klauzula nie jest uzyskiwanie wywołany. Jak wyjść z poprawnym kodem lub co najmniej nie udać się dla kodów niezwiązanych z powodzeniem?
Innym drobnym wymaganiem jest to, że chcę, aby dane wyjściowe z $ runCmd były drukowane na ekranie.
Potrzebujesz: 'exit ($ exit_code >> 8)'. – ErikR
Dlaczego tak jest? –
Wartość zwrócona przez 'system()' jest liczbą całkowitą, która koduje wartość wyjściową procesu potomnego plus flagi wskazujące, w jaki sposób proces potomny został zakończony (normalne zakończenie, zabite przez sygnał itd.) Wartość przekazana do 'wyjścia () 'jest po prostu wartością wyjściową. – ErikR