| Per-filehandle Special Variables | ||
|---|---|---|
| These variables never need to be mentioned in a local()because they always refer to some value pertaining to the currently selected output filehandle - each filehandle keeps its own set of values. | ||
| Variable | Contents | Mnemonic |
| $| | If set to nonzero, forces a flush after every write or print | When you want your pipes to be piping hot |
| $% | Current page number | % is page number in nroff |
| $= | Current page length | = has horizontal lines |
| $- | Number of lines left on the page | lines_on_page - lines_printed |
| $~ | Name of the current report format | Closely related to $^ |
| $^ | Name of the current top-of-page format | Points to top of page |
| Local Special Variables | ||
|---|---|---|
| These variables that are always local to the current block, so you never need to mention them in a local(). All of them are associated with the last successful pattern match. | ||
| Variable | Contents | Mnemonic |
| $1..$9 | Contains the subpattern from the corresponding set of parentheses in the last pattern matched | like \1..\9 |
| $& | Contains the string matched by the last pattern match | like & in some editors |
| $` | The string preceding whatever was matched by the last pattern match, not counting patterns matched in nested blocks that have been exited already. | ` often precedes a quoted string in normal text |
| $' | The string following whatever was matched by the last
pattern match, not counting patterns matched in nested blockes that have
been exited already. For example:
$_ = 'abcdefghi'; |
' often follows a quoted string in normal text |
| $+ | the last bracket matched by the last search pattern.
This is useful if you don't know which of a set of alternative patterns
matched. For example:
/Version: (.*)|Revision: (.*)/ && ($rev = $+); |
be positive and forward looking |
| Global Special Variables | ||
|---|---|---|
| There are quite a few variables that are global in the fullest sense -- they mean the same thing in every package. If you want a private copy of one of them, you must localize it in the current block. | ||
| Variable | Contents | Mnemonic |
| $_ | The default input and pattern-searching space. The following pairs are
equivalent:
while (<>) {... # equivalent only in while!
/^Subject:/
y/a-z/A-Z/
chop
|
underline is understood to be underlying certain undertakings |
| $. | The current input line number of the last filehandle that was read. Rember that only an explicit close on the filehandle resets the line number. | many programs use . to mean the current line number |
| $/ | The input record separator, newline by default. $/ may be set to a value longer than one character in order to match a multi-character delimiter. If $/ is undefined, no record separator is matched, and <FILEHANDLE> will read everything to the end of the current file. | / is used to delimit line boundries when quoting poetry. Or, if you prefer, think of mad slashers cutting things to ribbons. |
| $\ | The output record separator for the print operator. | You set $\ instead of adding \n at the end of the print. |
| $, | The output field separator for the print operator. | What is printed when there is a , in your print statement |
| $" | This is similar to $, except that it applies to array values interpolated into a double-quoted string (or similar interpreted string). Default is space. | Obvious, I think |
| $# | The output format for numbers display via the print operator | # is the number sign |
| $$ | The process number of the Perl running this script | Same as shells |
| $? | The status returned by the last pipe close, backtick(``) command or system operator. Note that this is the status word returned by the wait() system call, so the exit value of the subprocess is actually ($? >>*). $? & 255 gives which signal, if any, the process died from, and whether there was a core dump. | Similar to sh and ksh |
| $* | Set to 1 to do multi-line matching within a string, 0 to tell Perl that it can assume that strings contain a single line, for the purpose of optimizing pattern matches. Default is 0 | * matches multiple things |
| $0 | Contains the name of the file containing the Perl script being executed. Depending on your OS, it may or may not include the full pathname. | Same as sh and ksh |
| $[ | The index of the first element in an array, and of the first character in a substring. | [ begins subscripts |
| $] | The first part of the string printed out when you say perl -v. It can be used to determine at the beginning of a script whether the Perl interpreter executing the script is in the right range of versions. If used in a numeric context, $] returns version + patchlevel /1000. | Is this version of Perl in the "rightbracket"? |
| $; |
The subscript separator for multi-dimensional array emulation. If you refer
to an associative array element as:
$foo{$a,$b,$c}
|
Comma (the syntactic subscript separator) is a semi-semicolon. Yeah, it's pretty lame, but $, is already taken for something more important. |
| $! | If used in a numeric context, yields the current value of errno, with all the usual caveats. (This means that you shouldn't depend on the value of $! to be anything in particular unless you've gotten a specific error return indicating a system error.) If used in a string context, yields the corresponding sysem error string. | What just went bang? |
| $@ | The Perl syntax error or routine error message from the last eval, do-FILE, or require command. If set, either the compilation failed, or the die function was executed within the code of the eval. | Where was the syntax error at? |
