1use Contextual::Return 2 qr{}, 3 BOOL => BOOLEAN, 4 LIST => VECTOR, 5 NUM => NUMERIC, 6 STR => STRINGIFIC, 7 SCALAR => SINGULAR, 8; 9 10sub bar { 11 return 'in bar'; 12} 13 14sub foo { 15 return 16 BOOLEAN { 0 } 17 VECTOR { 1,2,3 } 18 NUMERIC { 42 } 19 STRINGIFIC { 'forty-two' } 20 SINGULAR { 86 } 21 SCALARREF { \7 } 22 HASHREF { { name => 'foo', value => 99} } 23 ARRAYREF { [3,2,1] } 24 GLOBREF { \*STDERR } 25 CODEREF { \&bar } 26 ; 27} 28 29package Other; 30use Test::More 'no_plan'; 31 32is_deeply [ ::foo() ], [1,2,3] => 'LIST context'; 33 34is do{ ::foo() ? 'true' : 'false' }, 'false' => 'BOOLEAN context'; 35 36is 0+::foo(), 42 => 'NUMERIC context'; 37 38is "".::foo(), 'forty-two' => 'STRING context'; 39 40is ${::foo}, 7 => 'SCALARREF context'; 41 42is_deeply \%{::foo()}, 43 { name => 'foo', value => 99} => 'HASHREF context'; 44 45is_deeply \@{::foo()}, [3,2,1] => 'ARRAYREF context'; 46 47is \*{::foo()}, \*STDERR => 'GLOBREF context'; 48 49is ::foo->(), 'in bar' => 'ARRAYREF context'; 50