This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlcheat
[perl5.git] / pod / perlcheat.pod
diff --git a/pod/perlcheat.pod b/pod/perlcheat.pod
new file mode 100644 (file)
index 0000000..a13491c
--- /dev/null
@@ -0,0 +1,93 @@
+=head1 NAME
+
+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
+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
+  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
+  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
+  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
+
+=head1 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
+Perl 6 version to show that Perl will stay Perl.
+
+=head1 AUTHOR
+
+Juerd Waalboer <juerd@cpan.org>, 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