http://www.perlmonks.org?node_id=656141


in reply to Obtaining a return code

From perldoc -f system:
You can check all the failure possibilities by inspecting $? like this:

   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;
   }

See also: $?

and

POSIX system