有些變量,Perl中的一個預定義的和特殊的意義。他們是變量使用後,通常變量標點符號指示如($, @或%),如$_(解釋如下)。
大部分特殊變量有像英語這樣長的名字,操作係統錯誤變量$!可以編寫為$OS_ERROR,但是,如果你要使用類似英文名稱。那麼你就必須把一條線“用英文”在程序文件的頂部。這個指導拾取的確切含義的變量:
#!/usr/bin/perl foreach ('hickory','dickory','doc') { print; print "\n"; } This will produce following result - by www.gitbook.net hickory dickory doc
第一次執行循環,"hickory"被打印。第二次繼續"dickory"被打印,第三次"doc"被打印。這是因為在循環的每次迭代中,當前字符串放置在$_,默認情況下,通過打印使用。這裡有地方,Perl將假定$_即便你不指定它:
基於特殊變量的使用情況和性質,我們可以分為以下幾類:
這裡是所有標特殊變量列表。我們列出了類似名稱相應的英文符號名。
$_ |
默認的輸入和模式搜索空間。 |
$ARG |
$. |
當前輸入的最後一個句柄讀取的行數。一個明確關閉的文件句柄重置行號。 |
$NR |
$/ |
輸入記錄分隔符,默認情況下是換行符。如果設置為空字符串,它會將空白行作為分隔。 |
$RS |
$, |
打印操作輸出字段分隔符。 |
$OFS |
$\ |
打印操作輸出記錄分隔符。 |
$ORS |
$" |
就像“$”,除非它適用於成一個雙引號字符串(或類似的解釋字符串)插值的列表值,默認是一個空格。 |
$LIST_SEPARATOR |
$; |
多維數組模擬下標分隔符,默認是“\034”。 |
$SUBSCRIPT_SEPARATOR |
$^L |
什麼樣的格式輸出到執行換頁,默認是“\ F”。 |
$FORMAT_FORMFEED |
$: |
當前字符串可能被分解後,填補格式的延續字段(以^開始)的字符集。默認是“\n”。 |
$FORMAT_LINE_BREAK_CHARACTERS |
$^A |
寫入格式行累加器的當前值。 |
$ACCUMULATOR |
$# |
包含打印的數字(已棄用)的輸出格式。 |
$OFMT |
$? |
由最後的管道關閉,反引號(``)命令,或係統操作返回的狀態。 |
$CHILD_ERROR |
$! |
如果在數值上下文中使用,產生的errno變量的當前值,確定最後的係統調用錯誤。如果在字符串上下文中使用,產生相應的係統錯誤字符串。 |
$OS_ERROR or $ERRNO |
$@ |
從最後eval命令的Perl語法錯誤消息。 |
$EVAL_ERROR |
$$ |
Perl處理管道執行這個腳本。 |
$PROCESS_ID or $PID |
$< |
這一進程的真實用戶ID(UID)。 |
$REAL_USER_ID or $UID |
$> |
這一進程的有效用戶ID。 |
$EFFECTIVE_USER_ID or $EUID |
$( |
這一進程的實際組ID(GID)。 |
$REAL_GROUP_ID or $GID |
$) |
這一進程的有效GID。 |
$EFFECTIVE_GROUP_ID or $EGID |
$0 |
包含含有Perl腳本被執行的文件名稱。 |
$PROGRAM_NAME |
$[ |
在數組的第一個元素和子串的第一個字符的索引,默認為0。 |
|
$] |
返回除以1000的版本加補丁程序級彆。 |
$PERL_VERSION |
$^D |
The current value of the debugging flags. |
$DEBUGGING |
$^E |
在一些平台上擴展錯誤消息。 |
$EXTENDED_OS_ERROR |
$^F |
係統的最大文件描述符,通常是2。 |
$SYSTEM_FD_MAX |
$^H |
包含編譯器內部的某些模塊啟用的提示。 |
|
$^I |
就地編輯擴展的當前值。使用undef禁用就地編輯。 |
$INPLACE_EDIT |
$^M |
$M的內容可以用來在緊急情況下,Perl 消亡與內存錯誤的內存池。$M使用需要特殊的Perl編譯。有關詳細信息,請參閱INSTALL文件。 |
|
$^O |
包含操作係統的名稱,目前的Perl二進製編譯。 |
$OSNAME |
$^P |
因此,調試器清除內部標誌,它不調試自身。 |
$PERLDB |
$^T |
在腳本的開始時間在幾秒鐘內運行以來的時間。 |
$BASETIME |
$^W |
警告切換的當前值,無論是真的還是假的(true or false)。 |
$WARNING |
$^X |
作為被執行的Perl二進製自身的名稱。 |
$EXECUTABLE_NAME |
$ARGV |
包含當前文件讀取時的名稱。 |
|
@ARGV |
命令行參數的數組,其中包含用於腳本。 |
@INC |
數組含有名額(空間)查找Perl腳本的列表計算,評估,需求,或使用建構。 |
@F |
分割時給出一個命令行開關輸入線數組。 |
%INC |
哈希包含每個文件的文件名項已被列入通過或要求。 |
%ENV |
哈希包含了您當前的環境。 |
%SIG |
哈希用來設置信號處理的各種信號。 |
ARGV |
遍曆@ ARGV中的命令行文件名的特殊文件句柄。一般空句柄在寫入<>。 |
STDERR |
標準錯誤中的任何包的特殊句柄。 |
STDIN |
標準輸入任何包的特殊句柄。 |
STDOUT |
任何包的標準輸出的特殊句柄。 |
DATA |
特殊的文件句柄,是指任何包含腳本文件後,__END__標誌。特殊文件句柄,或為任何所需的文件後的__DATA__記號,隻要你讀取數據,在同一個包中的__DATA__在裡邊被發現 |
_ (underscore) |
使用特殊的文件句柄緩存從最後的stat, lstat,,或文件測試操作的信息。 |
__END__ |
Indicates the logical end of your program. Any following text is ignored, but may be read via the DATA filehandle. |
__FILE__ |
Represents the filename at the point in your program where it's used. Not interpolated into strings. |
__LINE__ |
Represents the current line number. Not interpolated into strings. |
__PACKAGE__ |
Represents the current package name at compile time, or undefined if there is no current package. Not interpolated into strings. |
$digit |
Contains the text matched by the corresponding set of parentheses in the last pattern matched. For example, $1 matches whatever was contained in the first set of parentheses in the previous regular expression. |
$& |
The string matched by the last successful pattern match. |
$MATCH |
$` |
The string preceding whatever was matched by the last successful pattern match. |
$PREMATCH |
$' |
The string following whatever was matched by the last successful pattern match. |
$POSTMATCH |
$+ |
The last bracket matched by the last search pattern. This is useful if you don't know which of a set of alternative patterns was matched. For example: /Version: (.*)|Revision: (.*)/ && ($rev = $+); |
$LAST_PAREN_MATCH |
$| |
如果設置為非零,強製每寫入或打印fflush(3)後對當前選定的輸出通道。 |
$OUTPUT_AUTOFLUSH |
$% |
當前選定的輸出通道的當前頁碼。 |
$FORMAT_PAGE_NUMBER |
$= |
當前頁的長度(打印線)當前選中的輸出通道。默認值是60。 |
$FORMAT_LINES_PER_PAGE |
$- |
當前選中頁麵的輸出通道上留下的行數。 |
$FORMAT_LINES_LEFT |
$~ |
當前報表格式為當前選定的輸出通道的名稱。默認的文件句柄的名字。 |
$FORMAT_NAME |
$^ |
當前頂級的頁麵格式為當前選定的輸出通道的名稱。默認為名稱帶_TOP附加句柄。 |