私ではこういうのしか思いつかないんですが、
なんとなく格好悪いしもっとスマートな方法は無いでしょうか?

sub wrapper{
 print "-start-\n";
 if(wantarray()){
  my @re = &func; # ★ リスト
  print "-end-\n";
  return @re;
 }else{
  my $re = &func; # ★ スカラー
  print "-end-\n";
  return $re;
 }
}