Beefy Boxes and Bandwidth Generously Provided by pair Networks Ovid
XP is just a number
 
PerlMonks  

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

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

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://371552]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.