This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
sqrt() disappeared in OSX, assuming it became pow().
[perl5.git] / pod / perlcheat.pod
index a13491c..f288692 100644 (file)
@@ -5,73 +5,76 @@ perlcheat - Perl 5 Cheat Sheet
 =head1 DESCRIPTION
 
 This 'cheat sheet' is a handy reference, meant for beginning Perl
-programmers. Not everything is mentioned, but 194 features may
+programmers. Not everything is mentioned, but 195 features may
 already be overwhelming.
 
 =head2 The sheet
 
-  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
+  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
-  \     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)
+  \      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 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
-  list ops         ()    capture          REGEX CHARCLASSES
-  not              (?:)  no capture       .  == [^\n]
-  and              []    character class  \s == [\x20\f\t\r\n]
-  or xor           |     alternation      \w == [A-Za-z0-9_]
-                   \b    word boundary    \d == [0-9]
-                   \z    string end       \S, \W and \D negate
-  DO
-  use strict;        DON'T            LINKS
-  use warnings;      "$foo"           perl.com
-  my $var;           $$variable_name  perlmonks.org
-  open() or die $!;  `$userinput`     use.perl.org
-  use Modules;       /$userinput/     perl.apache.org
-                                      parrotcode.org
+  | ^             REGEX MODIFIERS       REGEX METACHARS
+  &&              /i case insensitive   ^      string begin
+  || //           /m line based ^$      $      str end (bfr \n)
+  .. ...          /s . includes \n      +      one or more
+  ?:              /x ignore 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     word 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  just use                    @INC  include paths
-  11 blksz  POSIX::      3..9 only      @_    subroutine args
-  12 blcks  strftime!    with EXPR      %ENV  environment
+   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
 
 =head1 ACKNOWLEDGEMENTS
 
@@ -84,10 +87,22 @@ Perl 6 version to show that Perl will stay Perl.
 
 =head1 AUTHOR
 
-Juerd Waalboer <juerd@cpan.org>, with the help of many Perl Monks.
+Juerd Waalboer <#####@juerd.nl>, with the help of many Perl Monks.
 
 =head1 SEE ALSO
 
- 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
+=over 4
+
+=item *
+
+L<http://perlmonks.org/?node_id=216602> - the original PM post
+
+=item *
+
+L<http://perlmonks.org/?node_id=238031> - Damian Conway's Perl 6 version
+
+=item *
+
+L<http://juerd.nl/site.plp/perlcheat> - home of the Perl Cheat Sheet
+
+=back