True, but I think it’s cleaner when you’re actually calling the function to not 
have to send a hashref. Small thing, of course, but I figure you write a 
function once, but call it many times. I’d rather the function call be 
cleaner/simpler than the function definition for that reason.

Sent from my iPhone

> On Jan 3, 2020, at 5:29 AM, Holger Glaess <gla...@glaessixs.de> wrote:
> 
> hi
> 
> 
> you can do by array
> 
> sub m4
> {
>    my ( $self,$args ) = @_;
> 
> # $args contains
> # $args->{'bla'} = blub
> # $args->['do'} = whatever
> }
> 
> 
> as call ( example )
> 
> $obj->m4 ({ bla => blub , do => whatever });
> 
> holger
> 
> 
> 
>> Am 02.01.20 um 21:40 schrieb danieljb...@icloud.com:
>> What if you want named parameters? (i.e. sending a hash as your
>> argument)
>> 
>> sub m4
>> {
>>     my $self = shift;
>>     my %args = @_;
>> 
>>     # and then optionally
>>     my ($arg1, $arg2, $arg3) = @args{qw/arg1 arg2 arg3/};
>> 
>>     # or you can just use $args{arg1}, etc...
>> }
>> 
>> 
>>> On Thu, Jan 02, 2020 at 09:12:42PM +0100, Marc Espie wrote:
>>> sub f
>>> {
>>>    my ($arg1, $arg2) = @_;
>>> 
>>>    ... code
>>> 
>>> }
>>> 
>>> - three styles of parameter grab for methods:
>>> 
>>> 
>>> sub m1
>>> {
>>>    my $self = shift;
>>> }
>>> 
>>> No other parameter.
>>> 
>>> sub m2
>>> {
>>>    my ($self, $p1, $p2) = @_;
>>> }
>>> 
>>> when getting all parameters (no check on the number usually)
>>> 
>>> 
>>> sub m3
>>> {
>>>    my $self = shift;
>>>    ...
>>>    do_something_with(@_);
>>> }
>>> 
>>> for functions with unlimited parameters after the first one
> 

Reply via email to