當前位置:首頁 » Perl » Perl特殊變量

Perl特殊變量

Perl特殊變量,實例,使用例子教學,Perl中的有些變量是一個預定義和有特殊的意義。

有些變量,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將假定$_即便你不指定它:

  • 一元運算符的不同函數,包括像ord和int的功能,以及所有的文件測試(-f-d)除了-t,其默認都是STDIN。
  • 各種列表函數,如print和unlink。
  • 模式匹配符m//, s///, 和 tr/// 當不使用 =~ 操作符。
  • 如果冇有其它變量提供,默認的迭代變量將在每次打循環。
  • 隱式迭代變量在 grep 和 map函數。
  • 把一個輸入記錄行輸入操作的結果時,測試一段時間的測試(即)唯一標準本身的默認位置。需要注意的是一段測試外,不會出現這種情況。

特殊的變量類型

基於特殊變量的使用情況和性質,我們可以分為以下幾類:

  • 全局標量的特殊變量.
  • 全局數組的特殊變量s.
  • 全局哈希的特殊變量.
  • 全局特殊文件句柄.
  • 全局特殊常量.
  • 正則表達式的特殊變量.
  • 文件句柄的特殊變量.

全局標量的特殊變量

這裡是所有標特殊變量列表。我們列出了類似名稱相應的英文符號名。

$_

默認的輸入和模式搜索空間。

$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附加句柄。