This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 2384afee9 / #123553
[perl5.git] / pod / perlcheat.pod
1 =head1 NAME
2
3 perlcheat - Perl 5 Cheat Sheet
4
5 =head1 DESCRIPTION
6
7 This 'cheat sheet' is a handy reference, meant for beginning Perl
8 programmers. Not everything is mentioned, but 195 features may
9 already 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 ignore 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     word 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
81 The first version of this document appeared on Perl Monks, where several
82 people had useful suggestions. Thank you, Perl Monks.
83
84 A special thanks to Damian Conway, who didn't only suggest important changes,
85 but also took the time to count the number of listed features and make a
86 Perl 6 version to show that Perl will stay Perl.
87
88 =head1 AUTHOR
89
90 Juerd Waalboer <#####@juerd.nl>, with the help of many Perl Monks.
91
92 =head1 SEE ALSO
93
94 =over 4
95
96 =item *
97
98 L<http://perlmonks.org/?node_id=216602> - the original PM post
99
100 =item *
101
102 L<http://perlmonks.org/?node_id=238031> - Damian Conway's Perl 6 version
103
104 =item *
105
106 L<http://juerd.nl/site.plp/perlcheat> - home of the Perl Cheat Sheet
107
108 =back