NAME
perlcheat - Perl 5 Cheat Sheet
DESCRIPTION
This 'cheat sheet' is a handy reference, meant for beginning Perl programmers. Not everything is mentioned, but 195 features may already be overwhelming.
The sheet
CONTEXTS SIGILS
ref
ARRAYS HASHES
void
$scalar
SCALAR
@array
%hash
scalar
@array
ARRAY
@array
[0, 2]
@hash
{
'a'
,
'b'
}
list
%hash
HASH
$array
[0]
$hash
{
'a'
}
&sub
CODE
*glob
GLOB SCALAR VALUES
FORMAT number, string,
ref
,
glob
,
undef
REFERENCES
\ reference
$$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
SYNTAX
OPERATOR PRECEDENCE
foreach
(LIST) { }
for
(a;b;c) { }
->
while
(e) { }
until
(e) { }
++ --
if
(e) { }
elsif
(e) { }
else
{ }
**
unless
(e) { }
elsif
(e) { }
else
{ }
! ~ \ u+ u-
given
(e) {
when
(e) {}
default
{} }
=~ !~
* / % x NUMBERS vs STRINGS FALSE vs TRUE
+ - . = =
undef
,
""
, 0,
"0"
<< >> + . anything
else
named uops == != eq ne
< > <= >= lt gt le ge < > <= >= lt gt le ge
== != <=> eq ne cmp ~~ <=> cmp
&
| ^ REGEX MODIFIERS REGEX METACHARS
&& /i case insensitive ^ string begin
|| // /m line based ^$ $ str end (bfr \n)
.. ... /s . includes \n + one or more
?: /x /xx ign. wh.space * zero or more
= +=
last
goto
/p preserve ? zero or one
, => /a ASCII /aa safe {3,7} repeat in range
list ops /l locale /d dual | alternation
not /u Unicode [] character class
and /e evaluate /ee rpts \b boundary
or xor /g global \z string end
/o compile pat once () capture
DEBUG (?:p)
no
capture
-MO=Deparse REGEX CHARCLASSES (?
#t) comment
-MO=Terse . [^\n] (?=p) ZW
pos
ahead
-D
## \s whitespace (?!p) ZW neg ahead
-d:Trace \w word chars (?<=p) ZW
pos
behind \K
\d digits (?<!p) ZW neg behind
CONFIGURATION \pP named property (?>p)
no
backtrack
perl -V:ivsize \h horiz.wh.space (?|p|p)branch
reset
\R linebreak (?<n>p)named capture
\S \W \D \H negate \g{n}
ref
to named cap
\K keep left part
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 10 hinthash
@INC
include paths
11 blksz 3..10 only
@_
subroutine args
12 blcks
with
EXPR
%ENV
environment
ACKNOWLEDGEMENTS
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 Raku version to show that Perl will stay Perl.
AUTHOR
Juerd Waalboer <#####@juerd.nl>, with the help of many Perl Monks.
SEE ALSO
https://perlmonks.org/?node_id=216602 - the original PM post
https://perlmonks.org/?node_id=238031 - Damian Conway's Raku version
https://juerd.nl/site.plp/perlcheat - home of the Perl Cheat Sheet