====== Perl Cheat Sheet ======
[[http://www.perl.org/ | Perl]] is a highly capable, feature-rich programming language with over 25 years of development. These notes follow the path of the [[http://www.amazon.com/Learning-Perl-Randal-L-Schwartz/dp/1449303587 | Learning Perl]] book.
* First line should be #!/usr/bin/perl or #!/usr/bin/env perl
* Perl compiles to byte-code before executing
* Do not use an extension for scripts.
* To specify a minimum version use "use 5.010;"
* Semicolons (;) required to separate statements
* "perl -w" turns on warnings for entire program. For just the current file use "use warnings;"
* "use diagnostics;" adds explanations to warnings
* "use strict;" requires variable declaration
* Comments start with # (no block comments)
===== Scalar Variables =====
* Scalars are numbers or strings (or undefined or references), used interchangeably.
* Scalar variables start with $ and a letter or underscore, but can contain letters (including unicode), numbers or underscores.
* Scalar assignment looks like $a = 3; or $a .= "suffix"; or $a %%**%%= 3;
* Recommended to use all lowercase variable names with underscores for word separation e.g. $var_name
* print takes a single scalar or a list of scalars (separated by commas)
* When a scalar is interpreted as a boolean, the following are //false// : 0, '0', %%''%%, undefined .
* !! is a handy shortcut to convert any scalar to 0 or 1 (to represent a boolean)
===== Numbers =====
* All numbers are stored in the same format e.g.-6.5e24, 037 (octal), 0x2a13b (hex), 0b11010 (binary)
* Underscores for readability are ignored e.g. 0x1377_0B77
* Arithmetic operators are * / + - % (modulus) ** (exponentiation)
* Comparison operators are < <= == >= > !=
===== Strings =====
* To use unicode in source code - "use utf8;"
* Single-quoted literals '⅚∞☃☠' can contain any character except single-quote (use \') and backslash (use \\).
* Double-quoted strings can contain control-characters starting with a backslash and are variable interpolated e/g/ "${var}s $var\n".
* . is for concatenation, x for string repetition.
* To insert a character by code - chr(0x05d0). To convert a character to its code - ord('א')
* String comparison operators are lt, le, eq, ge, gt, and ne
===== Control Structures =====
* if-elsif-else if ($a == $b) {
a = 0;
} elsif ($a > $b) {
a = 1;
} else {
a = -1;
}
* while loop $count=0;
while ($count < 10) {
$count += 2;
}
===== Input/Output =====
* Read a line of input - ''$line = ;''
* ''chomp'' removes a newline e.g. ''chomp($line=);''