Perl 特殊變數
Perl 中的特殊變數是具有某些預定義含義的變數。這些變數用實際名稱或標點符號表示。我們有一個特殊的變數用於所有 Perl 支援的變數,如標量特殊變數,陣列特殊變數,雜湊陣列特殊變數。我們使用的大多數特殊變數都是標量。
當我們想要使用特殊變數及其名稱時,我們必須載入一個 Perl 模組 using English
,以明確地告訴 Perl 直譯器我們將使用用其名稱的特殊變數。
標量特殊變數
變數 | 說明 |
---|---|
$_$ARG | 這是儲存當前值的預設變數。 |
$0 或$PROGRAM _NAME | 儲存 Perl 指令碼的檔名。 |
$/ |
輸入記錄分隔符,其預設值為 \n ,即換行符 |
$. |
儲存正在讀取的檔案的當前行號 |
$, |
輸出欄位分隔符,這主要由 print() 語句使用。預設值為 this,設定為 0,我們可以更改此變數的值。 |
$\ |
輸出記錄分隔符,此變數的值將為空;我們可以為此分配任何值,print()語句將在列印輸出時使用該值。 |
$# |
此變數用於列印數字時的輸出格式。 |
$%$FORMAT_PAGE_NUMBER |
將儲存讀取的檔案的當前頁碼。 |
$=$FORMAT_LINES_PER_PAGE |
將保持讀取檔案的當前頁面長度。 |
$-$FORMAT_LINES_LEFT |
保持頁面中剩餘要列印的行數。 |
$~$FORMAT_NAME |
格式名稱:預設儲存當前所選輸出的格式為檔案控制代碼名稱。 |
$^$FORMAT_TOP_NAME |
儲存檔案處理程式的標題格式的值,預設值為 _TOP ,後跟檔案控制代碼名稱。 |
`$ | $OUTPUT_AUTOFLUSH` |
$$ |
將儲存 Perl 直譯器的執行程序號。 |
$? |
狀態程式碼:管道和系統呼叫。執行命令的返回狀態。 |
$&$MATCH |
在正規表示式中使用,這將儲存最後一次成功模式匹配的字串。 |
$'$PREMATCH |
在正規表示式中使用時,這將保持前一個成功模式匹配的字串。 |
$'$POSTMATCH |
在正規表示式中使用時,這將儲存一個字串,後跟最後一次成功的模式匹配。 |
$+$LAST_PAREN_MATCH |
儲存與最後一次模式搜尋匹配的最後一個括號的字串。 |
$<digit> |
1 美元,2 美元,3 美元……保持按順序匹配的模式的值。 |
$[ |
第一個索引:Array,一個子字串。 |
$\] |
Perl 的一個版本。 |
$" |
用於列表元素的分隔符,預設值為空格 |
$; |
用於多維陣列的下標分隔符 |
$! |
在數字上下文中,輸出錯誤編號。在字串上下文中,列印錯誤。 |
$@ |
將保留語法錯誤資訊,在使用 eval()時使用。 |
$< |
儲存執行指令碼的程序的真實 UID(使用者標識)。 |
$> |
儲存執行指令碼的程序的有效 UID。 |
$( | 儲存執行指令碼的程序的實際 GID(組 ID) |
$) |
儲存執行指令碼的程序的有效 GID。 |
$^D$DEBUGGING |
保持除錯標誌的當前值。 |
$^C |
使用-c 命令列開關時,保持標誌的當前值。 |
$^F |
預設情況下,最大系統檔案描述符設定為 2 |
$^I$INPLACE _EDIT |
儲存-i 命令列開關的值。 |
$^M |
當 Perl 指令碼因外出記憶體錯誤而死亡時,可以使用特殊記憶體池。 |
$^O$OSNAME |
儲存作業系統資訊。用於 Linux 系統的 Linux ,用於 Windows 系統的 mswin32 。 |
$^T$BASETIME |
指令碼在幾秒鐘內執行的時間。 |
$^W$WARNING |
-w 命令列開關的當前值。警告開關。 |
$ARGV |
使用 <> 時當前檔案的名稱。 |
陣列特殊變數:
變數 | 說明 |
---|---|
@INC |
儲存路徑列表,在執行當前指令碼時可以檢視 Perl 庫模組或指令碼。這個@INC 由 use 和 require 語句用於檢視庫模組的那些路徑。 |
@ARGV |
儲存傳遞的命令列引數。 |
@ _ |
在子程式中使用,同時將引數傳遞給子程式。 |
@F |
這是自動拆分-a(使用命令列開關)時儲存輸入行的陣列。 |
雜湊陣列特殊變數:
變數 | 說明 |
---|---|
%INC |
檔名是鍵;值將是這些檔案的路徑。由 do,use 和 require 使用。 |
%ENV |
系統環境變數。 |
%SIG |
訊號處理程式。 |
Perl 示例:
my $str= "Hello World";
$str =~ /llo/;
print "$&\n"; # this will hold string of the last successful pattern match
print "$'\n"; #this will hold remaining string after patter match is done.
print "$`\n"; #this will hold the string before the patter match.
$\= "--"; #output record separator (Check output of print on output screen)
my $a =5;
my $b =6;
print "$a";
print "$b";
$\="\n";
my @array = qw(a b c d);
print "";
$"="-"; # output record separator arrays (Check output of print on output screen)
print "@array";
輸出
llo
World
He
5--6--
a-b-c-d