| =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 195 features may |
| already be overwhelming. |
| |
| =head2 The sheet |
| |
| 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 |
| \ 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 |
| NUMBERS vs STRINGS LINKS |
| OPERATOR PRECEDENCE = = perldoc.perl.org |
| -> + . search.cpan.org |
| ++ -- == != eq ne cpan.org |
| ** < > <= >= lt gt le ge pm.org |
| ! ~ \ u+ u- <=> cmp p3rl.org |
| =~ !~ perlmonks.org |
| * / % x SYNTAX |
| + - . foreach (LIST) { } for (a;b;c) { } |
| << >> while (e) { } until (e) { } |
| named uops if (e) { } elsif (e) { } else { } |
| < > <= >= lt gt le ge unless (e) { } elsif (e) { } else { } |
| == != <=> eq ne cmp ~~ given (e) { when (e) {} default {} } |
| & |
| | ^ REGEX METACHARS REGEX MODIFIERS |
| && ^ string begin /i case insensitive |
| || // $ str end (bfr \n) /m line based ^$ |
| .. ... + one or more /s . includes \n |
| ?: * zero or more /x ignore wh.space |
| = += -= *= etc ? zero or one /p preserve |
| , => {3,7} repeat in range /a ASCII /aa safe |
| list ops | alternation /l locale /d dual |
| not [] character class /u Unicode |
| and \b word boundary /e evaluate /ee rpts |
| or xor \z string end /g global |
| () capture /o compile pat once |
| DEBUG (?:p) no capture |
| -MO=Deparse (?#t) comment REGEX CHARCLASSES |
| -MO=Terse (?=p) ZW pos ahead . [^\n] |
| -D## (?!p) ZW neg ahead \s whitespace |
| -d:Trace (?<=p) ZW pos behind \K \w word chars |
| (?<!p) ZW neg behind \d digits |
| CONFIGURATION (?>p) no backtrack \pP named property |
| perl -V:ivsize (?|p|p)branch reset \h horiz.wh.space |
| (?&NM) cap to name \R linebreak |
| \S \W \D \H negate |
| 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 10 hinthash @INC include paths |
| 11 blksz 3..10 only @_ subroutine args |
| 12 blcks 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.nl>, with the help of many Perl Monks. |
| |
| =head1 SEE ALSO |
| |
| =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 |