use strict; use warnings; use feature qw'say state'; use Data::Dump; use diagnostics -verbose; # C D my (@x),(@y) List Context my (@x); my (@y); if( ( fork() ) == 0 ){ if( ( fork() ) == 0 ){ say 'C: list context'; @x ? do{say 'C @x not empty'} : do{say 'C @x empty'}; my ($s) = shift @x; @x ? do{say 'C ($s) = shift @x; @x not empty'} : do{say 'C ($s) = shift @x; @x empty'}; defined $s ? do{say 'C defined $s'} : do{say 'C undefined $s'}; print "\n"; say 'C: list context'; @y ? do{say 'C @y not empty'} : do{say 'C @y empty'}; my ($u) = splice( @y,0,1 ); @y ? do{say 'C ($u) = splice @y; @y not empty'} : do{say 'C ($u) = splice @y; @y empty'}; defined $u ? do{say 'C ($u) = splice @y; defined $u'} : do{say 'C ($u) = splice @y; undefined $u'}; print "\n"; }else{ say 'D: list context'; undef @x; @x ? do{say 'D undef @x; @x not empty'} : do{say 'D undef @x; @x empty'}; my ($t) = shift @x; @x ? do{say 'D ($t) = shift undef @x; @x not empty'} : do{say 'D ($t) = shift undef @x; @x empty'}; defined $t ? do{say 'D ($t) = shift undef @x; defined $t'} : do{say 'D ($t) = shift undef @x; undefined $t'}; print "\n"; say 'D: list context'; undef @y; @y ? do{say 'D undef @y; @y not empty'} : do{say 'D undef @y; @y empty'}; my ($v) = splice( @y,0,1 ); @y ? do{say 'D ($v) = splice undef @y; @y not empty'} : do{say 'D ($v) = splice undef @y; @y empty'}; defined $v ? do{say 'D ($v) = splice undef @y; defined $v'} : do{say 'D ($v) = splice undef @y; undefined $v'}; print "\n"; exit; } say "C D Done\n"; exit; }else{ say "\n",'C D my (@x),(@y) List Context',"\n"; }