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