Ctrl+P again to print, arrows/tab to navigate results, enter to confirm

    Perl 4 Package Separator

    Instead of

    utf8::decode $foo
    

    Use

    utf8'decode $foo
    

    Chained comparison evaluation

    In Perl v5.32+, comparisons chain such that something like $a < $b < $c evaluates as $a < $b && $b < $c. This means you can often shorten a conditional call to say:

    $_>1&&say
    $_>1>say
    

    Variable reset

    Several variables can be reset via various means:

    $.=5;<>;say$.    # 0 if there is nothing on STDIN
    $@=5;eval;say$@  # ''
    $!=5;-A;say 0+$! # 2
    

    Glob assignment

    In modern Perls you can't assign to a numeric variable greater than 0:

    ${0}=1;say$0 # OK
    ${1}=1;say$1 # Not OK (Modification of a read-only value)
    

    But you can use a glob to bypass this:

    *{1}=\1;say$1 # OK
    

    Thelen's device

    \ forces autovivication:

    $a{5}++;say 0+%a # 1
    \$b{5};say 0+%b  # 1
    

    You can use this, for example, to count unique values in a set:

    \%a{1,1,2,4,2,4,4,2};say 0+%a # 3
    

    Using $0

    Sometimes $0 can be used as a useful store for when some condition is true or false.

    Consider this solution to Sum of Divisors for OCaml Golf Competition:

    #!perl -p
    $'%$_ or$s+=$_ for//..($s=$_)/2;s/$/: $s/
    

    This can be golfed a byte by storing the sum in $0:

    #!perl -p
    map${$'%-$_}+=$_,//..($0=$_)/2;s/$/: $0/