There is one way that you can overcome it. It's pretty bad, though. :/
#!/usr/bin/perl -l
package Example::Module;
use overload '""' => sub { ref shift };
sub new {
bless [ $_[1] || "default" ], shift;
}
sub Example::Module {
return Example::Module::->new(@_);
}
sub print_it {
print $_[0]->[0];
}
package main;
$a = Example::Module();
$a->print_it;
$b = Example::Module("b");
$b->print_it;
__END__
default
b
Yeah. Not very pretty, I know. Also, it breaks if no parameters is an illegal option (i.e. your constructor returns undef or dies). This would come into play for calls such as Example::Module->print_it. Of course in that case you may as well just return "Example::Module" as the original code had.
antirice
The first rule of Perl club is - use Perl
The ith rule of Perl club is - follow rule i - 1 for i > 1