Acessing function parameters in Perl

Tutorial Difficulty Level    

Perl functions don’t have parameters, their arguments are passed in an array @_. You can simulate parameters by assigning to a list, but you can also just apply the usual array operations to @_.

To put in another way, Perl automatically populates the special @_ variable each time you call a function. You can access it in multiple ways:

directly, by simply using @_ or individual elements within it as $_[0], $_[1], and so on
by assigning it to another array, as shown above
by assigning it to a list of scalars (or possibly a hash, or another array, or combinations thereof):

Note that in this form you need to put the array @others at the end, because if you put it in earlier, it’ll slurp up all of the elements of @_. In other words, this won’t work:

You can also use shift to pull values off of @_:

Note that shift will automatically work on @_ if you don’t supply it with an argument.

You can also use named arguments by using a hash or a hash reference. For example, if you called wut() like:

This would be a good way to introduce named parameters into your functions, so that you can add parameters later and you don’t have to worry about the order in which they’re passed.