This is a quick and dirty cheat sheet.
Global Scalar Variables
| Default scalar | $_ |
| Program Name | $0 |
| Real user ID and Effective user ID | $< and $> |
| Real group ID and Effective group ID | $( and $) |
| Perl version number | $] |
| Input line separator and output line separator | $/ and $\ |
| Output field separator | $, |
| Array element separator | $" |
| Number output format | $# |
| Display the error message | $@ |
| Display the system error code | $? |
| Display the system error message | $! |
| Display the current line number | $. |
| Multiline matching | $* |
| First array subscript i.e first element is 0 | $[ |
| Word-Break specifier | $: |
| Perl process ID | $$ |
| Program start time (number of seconds since 01/01/70 returned | $^T |
Pattern System Variables
| Retrieving the Entire matched pattern | $& |
| Retrieving the unmatched pattern | $` (unmatched text preceding the match) $' (unmatched text following the match) |
| Matches the last subpattern enclosed in parentheses | $+ |
File System Variables
| Default Print Format | $~ |
| Specifying Page Length | $= |
| Lines remaining on the page | $- |
| Page header print format | $^ |
| Buffering output | $| |
| Current page number | $% |
Array System Variables
| List the arguements passed to a subroutine | @_ |
| List of arguements passed to the Perl program | @ARGV |
| List of directories to be searched for files requested by the require function | @INC |
| Associative array list the files requestyed by the require function that have already been found. | %INC |
| Eviroment variables that have been defined for the Perl program | %ENV |
| Send signals to other processes | %SIG |
Built in file Variables
| Standard IN, OUT and Error | STDIN, STDOUT, STDERR |
| Current input file | ARGV |
| Used with the __END__ special value to read data at the end of a file | DATA |
| Printing perl version | perl -v |
| Printing warnings | perl -w |
| Executing a single line program | perl -e "print ('Hello)'; |
| Excute a perl program | perl -s testfile.pl |
| Supplying your own Command-Line Options to a perl program | perl -s testfile.pl -potato="hot" (sets value potato to hot) |
| Operating on Multiple Files | perl -n -e "print $_;" file1 file2 file3 |
| Operating on files and printing | perl -p -e ";" file1 file2 file3 (same as Operating on Multiple Files) |
| Editing single or multiple files | perl -p -i -e "s/abc/def/g;" file1 file2 file3 |
| Writing secure programs | perl -T tesfile.pl |
| using the perl Debugger | perl -d testfile.pl |
Escape Sequences (Character Strings)
| Bell (beep) | \a |
| Backspace | \b |
| The ctrl+n character | \cn |
| Escape | \e |
| Ends the affect of \L, \U and \Q | \E |
| Form Feed | \f |
| Forces the next letter into lower case | \l |
| All following letters are lower case | \L |
| Newline | \n |
| Carriage Return | \r |
| Do not look for special pattern characters | \Q |
| Tab | \t |
| Force next letter into upper case | \u |
| All following letters are upper case | \U |
| Verital Tab | \v |
Integer Operators |
|
| equal to | == |
| less than | < |
| greater than | > |
| less than equal to | <= |
| greater than equal to | >= |
| not equal to | != |
| comparison returning 1,0 or -1 | <=> |
String Operators |
|
| equal to | eq |
| less than | lt |
| greater than | gt |
| less than equal to | le |
| greater than equal to | ge |
| not equal to | ne |
| comparison returning 1,0 or -1 | cmp |
Logical Operators |
|
| OR | || |
| AND | && |
| NOT | ! |
Bitwise Operators |
|
| bitwise AND | & |
| bitwise OR | | |
| bitwise XOR | ^ |
| bitwise NOT | ~ |
| Left shift | << |
| Right shift | >> |
Assignment Operators |
|
| Associate or assignment | = |
| addition and assignment | += |
| subtraction and assignment | -= |
| multiplication and assignment | *= |
| divison and assignment | /= |
| remainder and assignment | %= |
| exponentiation and assignment | **= |
| bitwise AND and assignment | &= |
| bitwise OR and assignment | |= |
| bitwise XOR and assignment | ^= |
Autoincrement and Autodecrement Operators |
|
| increment | ++ |
| decrement | -- |
String Operators |
|
| concatenation | . |
| repetition | x |
| Concatenation and assignment | .= |
Other Perl Operators |
|
| comma | , |
| conditional | <value> == <value> ? <value> : <value>; |
| Brackets | () |
| Autoincrement/Autodecrement | ++, -- |
| Operators with one operand | - , ~, ! |
| Exponentiation | ** |
| Pattern-Matching operators | =~, !~ |
| Multiplication, Division,Remainder and Repetition | *, /, %, x |
| Addition, Subtraction, Concatenation | +, -, . |
| Shifting operators | <<, >> |
| File-Status operators | -e, -r, etc |
| Inequality-comparison operators | <, <=, >, >=, lt, le, gt, ge |
| Equality-comparison operators | ==, !=, <=>, eq, ne, cmp |
| Bitwise AND | & |
| Bitwise OR and XOR | |, ^ |
| Logical AND | && |
| Logical OR | || |
| List-Range operator | .. |
| Conditional operator | ? and : |
| Assignment operators | =, +=, -=, *=, etc |
| Comma operator | , |
| low-precedence logical NOT | not |
| low-precedence logical AND | and |
| low-precedence logical OR and XOR | or, xor |
| matches any character except the newline character | . |
| means one or more of the preceding characters | + |
| enable you to define patterns that match one of a group of alternatives | [] |
| match zero or more occurrences of the preceding character | * |
| match zero or one occurrence of the preceding character | ? |
| match at beginning of a string | ^ or \A |
| match at the end of a string | $ or \Z |
| match on word boundary | \b |
| match inside a word | \B |
| if you want to include a character that is normally treated as a special character | \, \Q and \E |
| Excluding | [^] |
| Any digit | \d |
| Anything other than a digit | \D |
| Any word character | \w |
| Anything not a word character | \W |
| White space | \s |
| Anything other than a white space | \S |
| Specified number of occurrences | {1,3} Note: the format is {<minimum>,<maximum>} |
| specify choice | | |
| Portition reuse | () Note: first set stored in \1 (used in patern matching), or $1 (used when assign to variables) |
Pattern Matching Precedence |
|
| Order of precedence | () # Pattern memeory + * ? {} # Number of occurrences ^ $ \b \B # Pattern Anchors | # Alternatives |
Pattern Matching Options |
|
| Match all possible patterns | /g |
| Ignore case | /i |
| Treat string as multiple lines | /m |
| Only evaluate once | /o |
| Treat string as single line | /s |
| Ignore white space in pattern | /x |
| substitution | s/ Note: you can use any of the above pattern-matching options including the additional one below /e - evaluate replacement string as expression |
| Translation | tr/<string1>/<string2>/ Note: you can use y/ instead of tr/, you have several options |
| is name a block device | -b |
| is name a character device | -c |
| is name a directory | -d |
| does name exists | -e |
| is name a ordinary file | -f |
| does name have setgid bit set | -g |
| does name have its "sticky bit" set | -k |
| is name a symbolic link | -l |
| is name owned by the user | -o |
| is name a named pipe | -p |
| is name a readable file | -r |
| is name a non-empty file | -s |
| does name represent a terminal | -t |
| does name have its setuid bit set | -u |
| is name a writeable file | -w |
| is name an executable file | -x |
| is name a empty file | -z |
| how long since name has been accessed | -A |
| is name a binary file | -B |
| how long since name inode has been accessed | -C |
| how long since name has been modified | -M |
| is the name owned by the "real user" only | -O |
| is the name readable by the "real user" only | -R |
| is the name a socket | -S |
| is the name a text file | -T |
| is the name writeable by the "real user" only | -W |
| is the name executable by the "real user" only | -X |