my $pid = fork; die "can't fork: $!" if ! defined $pid; if ( $pid ) { # parent } else { # child } #### use 5.010; my $pid = fork // die "Can't fork: $!"; if ... #### use 5.010; given ( fork ) { when ( undef ) { die "Can't fork: $!"; } when ( !$_ ) { # child } default { # parent my $child_pid = $_; } } #### use 5.010; given ( wantarray ) { when ( undef ) { return; # void context } when ( !$_ ) { return 'scalar context'; } default { return qw( list context ); } } #### return wantarray ? qw( list context ) : defined wantarray ? 'scalar context'; #### return tfu( wantarray, true => sub { 'true' }, false => sub { 'false' }, undef => sub { 'undef' }, ); sub tfu { my $value = shift @_; my %todo_for = @_; return $value ? $todo_for{ true }->() : defined $value ? $todo_for{ false }->() : $todo_for{ undef }->(); }