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

New User

Mar 1, 2014, 5:43 PM

Views: 2568
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?

$self = shift;

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

Veteran / Moderator

Mar 2, 2014, 8:16 AM

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

$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


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.