=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
=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