Perl
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Warnings
Put a ; at the end of each line
autovivification
- If testing for existence of a hash key beware that all intermediate keys will be created by the test. In below example
$hash1($key1}
will be created if it does not exist yet.
if (exists $hash1{$key1}{$key2) {
...
} else {
...
}
)
Things that do work
Searching and matching is explained in Regular Expressions.
- Print out the contents of $variable in a structured format
use Data::Dumper;
print Dumper($variable);
if-then-else:
if < expr > {
<codeblock>
} elsif < expr ) {
<codeblock>
} else {
<codeblock>
}
- $var += <value>
- Add <value> to $var (works for -, *, / too)
- $string .= $addstring
- Concatenate $string and $addstring
- $string =~ s/<regexp>/<newvalue>/[g]
- Substitute <regexp> with <newvalue> in $string. The g modifier makes the all occurrences of <regexp> are substituted.
- $newstring = substr($string,start,length)
- Return substring of $string
- sprintf(format,$string)
- Return formatted string. format is e.g. "%.3f". Check Python:Strings#Advanced for all formats.
- $exitcode = system("a command")
- Executed the command in a subprocess and return the exitcode
- $output = `a command`
- Execute the command and return all command output
- sleep(x)
- Sleep for x seconds
- $|++
- Set standard output to unbuffered, every is put on screen immediately.
Hashes
- %newhash = (%oldhas1,%oldhash3)
- $newhashref = {$oldhasref1,$oldhashref3}
- Merge 2 hashes, works if all keys are unique
Arrays
- arr1 = split(<sep>,$string)
- Split a string in to an array on <sep>
- a = arr1[0]
- First element in arr1
- a = arr1[-1]
- Last element in arr1
Files
- open (FH, "< filename") || die("Open failed for filename")
- Open filename for reading on filehandle FH. Exit the program when the open failed
- @array = <FH>
- Read the file opened on FH into @array (1 element per line
- while ( line = (<FH>) )
- Read the file opened on FH line by line
Flow control
The usual works (if-then-else, for , foreach)
- ||die("message")
- || causes the statement only to be executed if the previous failed. Stop the program and write messaged to standard error.
- || do {codeblock};
- Like die but not exiting the program, use to do additional actions on the failure of the previous command
Compare
- ==, !=, >=, >, <, etc
- Compare numeric data
- eq, ne, ge, gt, lt, etc
- Compare strings