Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^2: Anonymous Hash in Constructor

by Jim (Curate)
on Oct 18, 2012 at 22:24 UTC ( #999826=note: print w/ replies, xml ) Need Help??


in reply to Re: Anonymous Hash in Constructor
in thread Anonymous Hash in Constructor

I somehow find it instructive to do this…

{ package SomeClass; sub new1 { bless {} } sub new2 { bless \%hash } sub does_it_work { print "Yes, it works\n" } } $obj1 = SomeClass->new1; $obj1->does_it_work; $obj2 = SomeClass->new2; $obj2->does_it_work;

…to your fine example. Removing all pragmas is intentional. This isn't quality code. It's simple code to make the rudiments of something clearer—to me, at least. I learned something by this reduction.


Comment on Re^2: Anonymous Hash in Constructor
Download Code
Re^3: Anonymous Hash in Constructor
by tobyink (Abbot) on Oct 19, 2012 at 05:50 UTC

    Ah, but using strict and warnings demonstrates that nothing in the example is considered bizarro stuff that Perl will complain about.

    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
      Ah, but using strict and warnings demonstrates that nothing in the example is considered bizarro stuff that Perl will complain about.

      Yes, indeed. Adding even more stuff to the example could introduce many new invaluable lessons. A complete, well-written Perl application could serve as a primer in good object-oriented programming. No doubt. But my point here was simply that I learned a little something by going a bit reduction-crazy. Noise reduction as pedagogical aid.

      Disregarding the original topic of this thread entirely, I learned more still by playing with this…

      { package Class; sub new { bless {} } # sub new { bless [] } # sub new { bless \$scalar } # sub new { bless \&sub } sub Method { print "This is a method happening.\n" } } $object = Class->new; $object->Method;

        Then this will blow your mind...

        sub x { print {+shift} "this is a method happening\n" } bless \*STDOUT, main::; (\*STDOUT)->x;
        perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Log In?
Username:
Password:

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

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

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (167 votes), past polls