xref: /openbsd/gnu/usr.bin/perl/pod/perlcheat.pod (revision 56d68f1e)
1=head1 NAME
2
3perlcheat - Perl 5 Cheat Sheet
4
5=head1 DESCRIPTION
6
7This 'cheat sheet' is a handy reference, meant for beginning Perl
8programmers. Not everything is mentioned, but 195 features may
9already be overwhelming.
10
11=head2 The sheet
12
13  CONTEXTS  SIGILS  ref        ARRAYS        HASHES
14  void      $scalar SCALAR     @array        %hash
15  scalar    @array  ARRAY      @array[0, 2]  @hash{'a', 'b'}
16  list      %hash   HASH       $array[0]     $hash{'a'}
17            &sub    CODE
18            *glob   GLOB       SCALAR VALUES
19                    FORMAT     number, string, ref, glob, undef
20  REFERENCES
21  \      reference       $$foo[1]       aka $foo->[1]
22  $@%&*  dereference     $$foo{bar}     aka $foo->{bar}
23  []     anon. arrayref  ${$$foo[1]}[2] aka $foo->[1]->[2]
24  {}     anon. hashref   ${$$foo[1]}[2] aka $foo->[1][2]
25  \()    list of refs
26                         SYNTAX
27  OPERATOR PRECEDENCE    foreach (LIST) { }     for (a;b;c) { }
28  ->                     while   (e) { }        until (e)   { }
29  ++ --                  if      (e) { } elsif (e) { } else { }
30  **                     unless  (e) { } elsif (e) { } else { }
31  ! ~ \ u+ u-            given   (e) { when (e) {} default {} }
32  =~ !~
33  * / % x                 NUMBERS vs STRINGS  FALSE vs TRUE
34  + - .                   =          =        undef, "", 0, "0"
35  << >>                   +          .        anything else
36  named uops              == !=      eq ne
37  < > <= >= lt gt le ge   < > <= >=  lt gt le ge
38  == != <=> eq ne cmp ~~  <=>        cmp
39  &
40  | ^             REGEX MODIFIERS       REGEX METACHARS
41  &&              /i case insensitive   ^      string begin
42  || //           /m line based ^$      $      str end (bfr \n)
43  .. ...          /s . includes \n      +      one or more
44  ?:              /x /xx ign. wh.space  *      zero or more
45  = += last goto  /p preserve           ?      zero or one
46  , =>            /a ASCII    /aa safe  {3,7}  repeat in range
47  list ops        /l locale   /d  dual  |      alternation
48  not             /u Unicode            []     character class
49  and             /e evaluate /ee rpts  \b     boundary
50  or xor          /g global             \z     string end
51                  /o compile pat once   ()     capture
52  DEBUG                                 (?:p)  no capture
53  -MO=Deparse     REGEX CHARCLASSES     (?#t)  comment
54  -MO=Terse       .   [^\n]             (?=p)  ZW pos ahead
55  -D##            \s  whitespace        (?!p)  ZW neg ahead
56  -d:Trace        \w  word chars        (?<=p) ZW pos behind \K
57                  \d  digits            (?<!p) ZW neg behind
58  CONFIGURATION   \pP named property    (?>p)  no backtrack
59  perl -V:ivsize  \h  horiz.wh.space    (?|p|p)branch reset
60                  \R  linebreak         (?<n>p)named capture
61                  \S \W \D \H negate    \g{n}  ref to named cap
62                                        \K     keep left part
63  FUNCTION RETURN LISTS
64  stat      localtime    caller         SPECIAL VARIABLES
65   0 dev    0 second      0 package     $_    default variable
66   1 ino    1 minute      1 filename    $0    program name
67   2 mode   2 hour        2 line        $/    input separator
68   3 nlink  3 day         3 subroutine  $\    output separator
69   4 uid    4 month-1     4 hasargs     $|    autoflush
70   5 gid    5 year-1900   5 wantarray   $!    sys/libcall error
71   6 rdev   6 weekday     6 evaltext    $@    eval error
72   7 size   7 yearday     7 is_require  $$    process ID
73   8 atime  8 is_dst      8 hints       $.    line number
74   9 mtime                9 bitmask     @ARGV command line args
75  10 ctime               10 hinthash    @INC  include paths
76  11 blksz               3..10 only     @_    subroutine args
77  12 blcks               with EXPR      %ENV  environment
78
79=head1 ACKNOWLEDGEMENTS
80
81The first version of this document appeared on Perl Monks, where several
82people had useful suggestions. Thank you, Perl Monks.
83
84A special thanks to Damian Conway, who didn't only suggest important changes,
85but also took the time to count the number of listed features and make a
86Raku version to show that Perl will stay Perl.
87
88=head1 AUTHOR
89
90Juerd Waalboer <#####@juerd.nl>, with the help of many Perl Monks.
91
92=head1 SEE ALSO
93
94=over 4
95
96=item *
97
98L<https://perlmonks.org/?node_id=216602> - the original PM post
99
100=item *
101
102L<https://perlmonks.org/?node_id=238031> - Damian Conway's Raku version
103
104=item *
105
106L<https://juerd.nl/site.plp/perlcheat> - home of the Perl Cheat Sheet
107
108=back
109