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.

Color Key

Previously Covered   New This Week   Covered in Future

Any items not highlighted will not be specifically covered in this course

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      /o cmpl pat. once
  list ops         ()    capture             
  not              (?:)  no capture       REGEX CHARCLASSES    
  and              []    character class  .  == [^\n]          
  or xor           |     alternation      \s == whitespace     
                   \b    word boundary    \w == word characters
                   \z    string end       \d == digits         
  DO                                      \S, \W and \D negate 
  use strict;        DON'T
  use warnings;      "$foo"           LINKS
  my $var;           $$variable_name  perl.com
  open() or die $!;  `$userinput`     use.perl.org
  use Modules;       /$userinput/     perl.apache.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      


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.


AUTHOR

Juerd Waalboer <#####@juerd.nl>, with the help of many Perl Monks.


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