以下のような場合に、色々なコンテキストに対応するにはどのようにしたらよいのでしょうか?

my @a = &wrapper(); # リスト
my $s = &wrapper(); # スカラー

sub wrapper{
 print "-start-\n";
 my @re = &func; # ★ リストしか・・
 print "-end-\n";
 return @re;
}

sub func{}