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 <glaess@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 danieljboyd@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
>
No comments:
Post a Comment