Home: Perl Programming Help: Beginner:
Can someone tell me what this syntax means?



homer_3
New User

Mar 1, 2014, 5:43 PM


Views: 2547
Can someone tell me what this syntax means?

I'm looking through some perl code and ran across some syntax I can't figure out. Can someone tell me what the below code means?


Quote
$self = shift;
$self->{'_invert'};



(This post was edited by homer_3 on Mar 1, 2014, 5:44 PM)


FishMonger
Veteran / Moderator

Mar 2, 2014, 8:16 AM


Views: 2532
Re: [homer_3] Can someone tell me what this syntax means?


Code
$self = shift;

That's a var assignment.

The shift function removes the first element of an array shortening the array by 1 element, presumably this line is in a subroutine so it would be acting on the @_ array. In this case the value shifted off of the array is being assigned to $self.

See: perldoc -f shift
http://perldoc.perl.org/functions/shift.html


Code
$self->{'_invert'};

Here, we see that $self is hash reference and one of its keys is '_invert'. Since it's being used in void context, my assumption is that the '_invert' key is being added to the hash and its value will default to undef.

If the '_invert' key was already in the hash, then that line would do nothing and would be pointless.