#!/usr/bin/perl use strict; use warnings; use feature 'say'; use Data::Dumper; use POSIX qw/ WIFEXITED /; use Test::More tests => 2; WIFEXITED( system '/bin/false' ) or die $!; ok( WIFEXITED( system '/bin/false' ), "Should fail because exits 1" ); ok( WIFEXITED( system '/bin/true' ), "Should pass because exits 0" ); done_testing(); Run it: 1..2 ok 1 - Should fail because exits 1 ok 2 - Should pass because exits 0 #### #!/usr/bin/perl use strict; use warnings; use feature 'say'; use Data::Dumper; use POSIX qw/ WIFEXITED /; use Test::More tests => 2; ok( WIFEXITED( ( system '/bin/false' ) >> 8 ) , "This should fail because exits 1" ); ok( WIFEXITED( ( system '/bin/true' ) >> 8 ) , "This should pass because exits 0" ); done_testing(); Run it: 1..2 not ok 1 - This should fail because exits 1 # Failed test 'This should fail because exits 1' # at ./perl line 10. ok 2 - This should pass because exits 0 # Looks like you failed 1 test of 2.