Difference between revisions of "Perl"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
+ | =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 <code>$hash1($key1}</code> will be created if it does not exist yet. | ||
+ | <syntaxhighlight lang=Perl> | ||
+ | if (exists $hash1{$key1}{$key2) { | ||
+ | ... | ||
+ | } else { | ||
+ | ... | ||
+ | } | ||
+ | ) | ||
+ | </syntaxhighlight> | ||
=Things that do work= | =Things that do work= | ||
Line 41: | Line 54: | ||
:Execute the command and return all command output | :Execute the command and return all command output | ||
− | =Hashes= | + | ==Hashes== |
;%newhash = (%oldhas1,%oldhash3) | ;%newhash = (%oldhas1,%oldhash3) | ||
:Merge 2 hashes (works is all keys are unique) | :Merge 2 hashes (works is all keys are unique) | ||
− | == | + | ==Files== |
− | + | ;open (FH, "< filename") || die("Open failed for filename") | |
− | + | :Open filename for reading on filehandle FH. Exit the program when the open failed | |
− | if ( | + | |
− | + | ;@array = <FH> | |
− | + | :Read the file opened on FH into @array (1 element per 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 |
Revision as of 12:05, 5 March 2019
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
Hashes
- %newhash = (%oldhas1,%oldhash3)
- Merge 2 hashes (works is all keys are unique)
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
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