perlcheat - Perl 5 Cheat Sheet
This 'cheat sheet' is a handy reference, meant for beginning Perl programmers. Not everything is mentioned, but 195 features may already be overwhelming.
- CONTEXTS SIGILS ARRAYS HASHES
 - void $scalar whole: @array %hash
 - scalar @array slice: @array[0, 2] @hash{'a', 'b'}
 - list %hash element: $array[0] $hash{'a'}
 - &sub
 - *glob SCALAR VALUES
 - number, string, reference, glob, undef
 - REFERENCES
 - \ references $$foo[1] aka $foo->[1]
 - $@%&* dereference $$foo{bar} aka $foo->{bar}
 - [] anon. arrayref ${$$foo[1]}[2] aka $foo->[1]->[2]
 - {} anon. hashref ${$$foo[1]}[2] aka $foo->[1][2]
 - \() list of refs
 - NUMBERS vs STRINGS LINKS
 - OPERATOR PRECEDENCE = = perl.plover.com
 - -> + . search.cpan.org
 - ++ -- == != eq ne cpan.org
 - ** < > <= >= lt gt le ge pm.org
 - ! ~ \ u+ u- <=> cmp tpj.com
 - =~ !~ perldoc.com
 - * / % x SYNTAX
 - + - . for (LIST) { }, for (a;b;c) { }
 - << >> while ( ) { }, until ( ) { }
 - named uops if ( ) { } elsif ( ) { } else { }
 - < > <= >= lt gt le ge unless ( ) { } elsif ( ) { } else { }
 - == != <=> eq ne cmp for equals foreach (ALWAYS)
 - &
 - | ^ REGEX METACHARS REGEX MODIFIERS
 - && ^ string begin /i case insens.
 - || $ str. end (before \n) /m line based ^$
 - .. ... + one or more /s . includes \n
 - ?: * zero or more /x ign. wh.space
 - = += -= *= etc. ? zero or one /g global
 - , => {3,7} repeat in range /o cmpl pat. once
 - list ops () capture
 - not (?:) no capture REGEX CHARCLASSES
 - and [] character class . == [^\n]
 - or xor | alternation \s == whitespace
 - \b word boundary \w == word characters
 - \z string end \d == digits
 - DO \S, \W and \D negate
 - use strict; DON'T
 - use warnings; "$foo" LINKS
 - my $var; $$variable_name perl.com
 - open() or die $!; `$userinput` use.perl.org
 - use Modules; /$userinput/ perl.apache.org
 - FUNCTION RETURN LISTS
 - stat localtime caller SPECIAL VARIABLES
 - 0 dev 0 second 0 package $_ default variable
 - 1 ino 1 minute 1 filename $0 program name
 - 2 mode 2 hour 2 line $/ input separator
 - 3 nlink 3 day 3 subroutine $\ output separator
 - 4 uid 4 month-1 4 hasargs $| autoflush
 - 5 gid 5 year-1900 5 wantarray $! sys/libcall error
 - 6 rdev 6 weekday 6 evaltext $@ eval error
 - 7 size 7 yearday 7 is_require $$ process ID
 - 8 atime 8 is_dst 8 hints $. line number
 - 9 mtime 9 bitmask @ARGV command line args
 - 10 ctime just use @INC include paths
 - 11 blksz POSIX:: 3..9 only @_ subroutine args
 - 12 blcks strftime! with EXPR %ENV environment
 
The first version of this document appeared on Perl Monks, where several people had useful suggestions. Thank you, Perl Monks.
A special thanks to Damian Conway, who didn't only suggest important changes, but also took the time to count the number of listed features and make a Perl 6 version to show that Perl will stay Perl.
Juerd Waalboer <#####@juerd.nl>, with the help of many Perl Monks.
- http://perlmonks.org/?node_id=216602 the original PM post
 - http://perlmonks.org/?node_id=238031 Damian Conway's Perl 6 version
 - http://juerd.nl/site.plp/perlcheat home of the Perl Cheat Sheet