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