>
Is there a way to get this reduced to one line?
I doubt it's a good idea, since you might still want to pass more positional parameters.
Otherwise you could just pass a list func(a=>1) with sub func { my %args = @_}
But for completeness a solution with the new refaliasing feature
use strict;
use warnings;
use Data::Dump qw/pp dd/;
use feature qw/refaliasing/;
no warnings "experimental::refaliasing";
sub tst {
(\my %args) = @_;
pp \%args;
}
tst({a=>1,b=>2});
C:/Perl_524/bin\perl.exe d:/tmp/pm/refaliasing.pl
{ a => 1, b => 2 }
|