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 >