Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

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

by merlyn (Sage)
on Jul 01, 2004 at 16:19 UTC ( #371151=note: print w/ replies, xml ) Need Help??


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

my $e = Example::Module();
That would be the same as:
my $e = "Example::Module";
So no, it doesn't work. I thought about it for a while... and I can't figure out a way around that corner case that doesn't break other class methods. Oh well... gotta say "new" sometime, I guess.

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.


Comment on •Re^3: Create a constructor named the same as your package name!
Select or Download Code
Replies are listed 'Best First'.
Re^4: Create a constructor named the same as your package name!
by antirice (Priest) on Jul 03, 2004 at 06:16 UTC

    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
Node Status?
node history
Node Type: note [id://371151]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (14)
As of 2015-07-30 16:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (273 votes), past polls