use Foo; my $new = \&Foo::new; my $obj = &$new(); # Bzzzt! without the ->, it doesn't pass the class # name as the 1st arg $new = sub { return Foo->new(@_) }; $obj = &$new(); # does what I want, but is this necessary?