The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Contextual::Return;
use Test::More 'no_plan';

sub foo {
    my ($expected) = @_;
       if (VOID)   { is $expected, 'void'    => 'VOID test';        }
    elsif (LIST)   { is $expected, 'list'    => 'LIST test';        }
    elsif (SCALAR) { is $expected, 'scalar'  => 'SCALAR test';      }
    else           { ok 0                    => 'bizarre behaviour' }
}

my @foo = foo(  'list'  );
my $foo = foo( 'scalar' );
          foo(  'void'  );

sub bar {
    my ($expected) = @_;
       if (VOID)    { is $expected,   'void'    => 'VOID test';          }
    elsif (NONVOID) { isnt $expected, 'void'    => "NONVOID(\U$expected\E) test"; }
    else           { ok 0                    => 'bizarre behaviour' }
}

my @bar = bar(  'list'  );
my $bar = bar( 'scalar' );
          bar(  'void'  );