in reply to Can I rewrite this code?

Not so nice, but possible:
my %args = %{ $_[0] }; # or my %args = %{ +shift };

Update: The dereference curly braces introduce a new scope, so declaring the variable inside doesn't make sense:

my %args = %{ my $arg = shift }; # Here, $arg doesn't exist.
($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Replies are listed 'Best First'.
Re^2: Can I rewrite this code?
by Anonymous Monk on Nov 23, 2018 at 17:40 UTC
    and what does + in front of shift do?

      The + in front of shift tells Perl that you want the function shift and not a string "shift" as the hash key.