Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Basic Class question

by dsheroh (Prior)
on Aug 21, 2013 at 12:13 UTC ( #1050339=note: print w/replies, xml ) Need Help??


in reply to Basic Class question

Yes, there's a good reason for it: That's how OO works in Perl. When you invoke a sub using ->, then whatever is on the left side of the arrow is passed as the first argument.

If you call My::Class->foo, then foo gets My::Class as its first argument, allowing it to know which class it was called as a method of. This isn't terribly important in most cases, but, without it, things like polymorphic constructors get a lot trickier, since they don't know whether they were called on the base class or a subclass.

If you call $some_obj->foo, then foo gets $some_obj as its first argument, which is extremely important if you want to be able to access the object's instance data.

If you call My::Class::foo, then it gets only the arguments you explicitly provide, the same as if you imported it and then called foo()1. But you probably don't really want to do that. Writing subs that can be called in both OO and non-OO fashions adds complexity and, in most cases, provides little or no benefit.


1 Note that I didn't prefix the function call with &. It's not needed in Perl 5 and has non-obvious side-effects which you almost certainly don't need. Only use the & prefix on function calls if you know exactly what the effects are and why you want those effects.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1050339]
help
Chatterbox?
[Lady_Aleena]: shmem, there is MP3::Info/
[Discipulus]: too much complex qx when you know perl are better to avoid
[marioroy]: might need to backslash \'*.mp3\'
[marioroy]: It's a quoting issue inside qx. It's File::Find or qx. LA chooses qx. Almost there.
[marioroy]: Also \"%S\\\n\" oh my, not fun.
[Discipulus]: good night folks
[marioroy]: I will make a mp3info script that takes the -p "%S\n" args and test qx. I'm on the road, so will come back.
[marioroy]: All because File::Find is not fun for LA.
[marioroy]: good night Discipulus.
[Discipulus]: perl dreams to you all

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (11)
As of 2017-04-23 21:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I'm a fool:











    Results (432 votes). Check out past polls.