Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^4: Create a constructor named the same as your package name!

by antirice (Priest)
on Jul 03, 2004 at 06:16 UTC ( #371552=note: print w/ replies, xml ) Need Help??


in reply to •Re^3: Create a constructor named the same as your package name!
in thread Create a constructor named the same as your package name!

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


Comment on Re^4: Create a constructor named the same as your package name!
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://371552]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (6)
As of 2014-07-14 03:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (254 votes), past polls