Perlで関数を動的に呼び出すにはどうしたらいいですか?

&call("&disp();");

sub call(){
my $func = shift;
eval $func;
}

sub disp(){
print "Hello!!";
}

ってなことをやりたいんですが、もう少しエレガントな方法はないものかと。。。