$_這個特殊變數是許多Perl函數的預設參數,也是許多Perl控制結構的預設控制變數. $_特殊變數也可當作一個函數調用缺失的參數來使用.
foreach 結構的控制變數是可選的,預設為$_的值.
Perl把最近發生的系統錯誤訊息儲存在特殊變數$!中.
#! /usr/local/bin/perl -W
#fig05_03.pl
foreach $name('Amanda','Jeff','Sarah','David') {
print "$name";
}
print "/n";
foreach('Amanda','Jeff','Sarah','David'){
print "$_";
}
print "/n";
foreach('Amanda','Jeff','Sarah','David'){
print;
}
print "/n";
----------------------------------------------------------
輸出如下:
AmandaJeffSarahDavid
AmandaJeffSarahDavid
AmandaJeffSarahDavid
在參數缺失的情況下 $_ 是預設的參數.
其它一些常見的特殊變數還包括:
$- 當前頁可列印的行數,屬於Perl格式系統的一部分
$! 根據上下文內容返回錯誤號碼或者錯誤串
$" 清單分隔符號
$# 列印數字時預設的數字輸出格式
$$ Perl解譯器的進程ID
$% 當前輸出通道的當前頁號
$& 與上個格式匹配的字串
$( 當前進程的組ID
$) 當前進程的有效組ID
$* 設定1表示處理多行格式.現在多以/s和/m修飾符取代之.
$, 當前輸出欄位分隔符號
$. 上次閱讀的檔案的當前輸入行號
$/ 當前輸入記錄分隔字元,預設情況是新行
$: 字元設定,此後的字串將被分開,以填充連續的欄位.
$; 在模擬多維陣列時使用的分隔字元.
$? 返回上一個外部命令的狀態
$@ Perl解譯器從eval語句返回的錯誤訊息
$[ 數組中第一個元素的索引號
$/ 當前輸出記錄的分隔字元
$] Perl解譯器的子版本號碼
$^ 當前通道最上面的頁面輸出格式名字
$^A 列印前用於儲存格式化資料的變數
$^D調試標誌的值
$^E在非UNIX環境中的作業系統擴充錯誤資訊
$^F最大的檔案捆述符數值
$^H由編譯器啟用的語法檢查狀態
$^I內建控制編輯器的值
$^L發送到輸出通道的走紙換頁符
$^M備用記憶體池的大小
$^O作業系統名
$^P指定當前調試值的內部變數
$^RRegex塊的上次求值結果
$^S當前解譯器狀態
$^T從新世紀開始算起,腳步本以秒計算的開始啟動並執行時間
$^W警告開關的當前值
$^X Perl二進位可執行代碼的名字
$_ 預設的輸入/輸出和格式匹配空間
$| 控制對當前選擇的輸出檔案控制代碼的緩衝
$~ 當前報告格式的名字
$` 在上個格式匹配資訊前的字串
$’ 在上個格式匹配資訊後的字串
$+ 與上個Regex搜尋格式匹配的最後一個括弧
$< 當前執行解譯器的使用者的真實ID
$<digits>含有與上個匹配Regex對應括弧結果
$= 當前頁面可列印行的數目
$> 當前進程的有效使用者ID
$0 包含正在執行的指令碼的檔案名稱
$ ARGV 從預設的檔案控制代碼中讀取時的當前檔案名稱
%ENV 環境變數列表
%INC 通過do或require包含的檔案清單
%SIG 訊號列表及其處理方式
@_ 傳給子程式的參數列表
@ARGV 傳給指令碼的命令列參數列表
@INC 在匯入模組時需要搜尋的目錄列表