Perl中的預設變數 和 什麼意思

時間 2021-08-30 09:32:00

1樓:匿名使用者

@_ 在某個函式內,陣列 @_ 包含傳遞給該函式的所有引數。

$_ 預設的輸入/輸出和格式匹配空間

@_的示例:

#!/bin/perl -w

use strict;

&fun( 111,222,333 );

sub fun()

這裡會把傳入函式的引數111222333列印出來。

$_示例:

下面的幾對**都是等同的:

while (<>) # equivalent only in while!

while (defined($_ = <>))

/^subject:/

$_ =~ /^subject:/

tr/a-z/a-z/

$_ =~ tr/a-z/a-z/

chomp

chomp($_)

以下是幾處即使沒有寫明 perl 也會假定使用 $_ 的地方:

* 各種單目函式,包括像 ord() 和 int() 這樣的函式以及除 "-t"

以外所有的檔案 測試操作 ("-f","-d"),"-t" 預設操作 stdin。

* 各種列表函式,例如 print() 和 unlink()。

* 沒有使用 "=~" 運算子時的模式匹配操作 "m//"、"s///" 和

"tr///"。

* 在沒有給出其他變數時是 "foreach" 迴圈的預設迭代變數。

* grep() 和 map() 函式的隱含迭代變數。

* 當 "while" 僅有唯一條件,且該條件是對 ""

操作的結果進行測試時,$_ 就是存放輸入記錄的預設位置。除了

"while" 測試條件之外不會發生這種情況。

(助記:下劃線在特定操作中是可以省略的。)

@_和$_都是perl很常用的特殊變數。建議系統看一下《perl語言入門》。

另附perl常用特殊變數列表:

perl 內建變數

$- 當前頁可列印的行數,屬於perl格式系統的一部分

$! 根據上下文內容返回錯誤號或者錯誤串

$」 列表分隔符

$# 列印數字時預設的數字輸出格式

$$ perl直譯器的程序id

$% 當前輸出通道的當前頁號

$& 與上個格式匹配的字串

$( 當前程序的組id

$) 當前程序的有效組id

$* 設定1表示處理多行格式.現在多以/s和/m修飾符取代之.

$, 當前輸出欄位分隔符

$. 上次閱讀的檔案的當前輸入行號

$/ 當前輸入記錄分隔符,預設情況是新行

$: 字元設定,此後的字串將被分開,以填充連續的欄位.

$; 在**多維陣列時使用的分隔符.

$? 返回上一個外部命令的狀態

$@ perl直譯器從eval語句返回的錯誤訊息

$[ 陣列中第一個元素的索引號

$\ 當前輸出記錄的分隔符

$] perl直譯器的子版本號

$^ 當前通道最上面的頁面輸出格式名字

$^a 列印前用於儲存格式化資料的變數

$^d 除錯標誌的值

$^e 在非unix環境中的作業系統擴充套件錯誤資訊

$^f 最大的檔案捆述符數值

$^h 由編譯器啟用的語法檢查狀態

$^i 內建控制編輯器的值

$^l 傳送到輸出通道的走紙換頁符

$^m 備用記憶體池的大小

$^o 作業系統名

$^p 指定當前除錯值的內部變數

$^r 正規表示式塊的上次求值結果

$^s 當前直譯器狀態

$^t 從新世紀開始算起,腳步本以秒計算的開始執行的時間

$^w 警告開關的當前值

$^x perl二進位制可執行**的名字

$_ 預設的輸入/輸出和格式匹配空間

$| 控制對當前選擇的輸出檔案控制代碼的緩衝

$~ 當前報告格式的名字

$` 在上個格式匹配資訊前的字串

$』 在上個格式匹配資訊後的字串

$+ 與上個正規表示式搜尋格式匹配的最後一個括號

$< 當前執行直譯器的使用者的真實id

$ 含有與上個匹配正規表示式對應括號結果

$= 當前頁面可列印行的數目

$> 當前程序的有效使用者id

包含正在執行的指令碼的檔名

$argv 從預設的檔案控制代碼中讀取時的當前檔名

%env 環境變數列表

%inc 通過do或require包含的檔案列表

%sig 訊號列表及其處理方式

@_ 傳給子程式的引數列表

@argv 傳給指令碼的命令列引數列表

@inc 在匯入模組時需要搜尋的目錄列表

$-[0]和$+[0] 代表當前匹配的正規表示式在被匹配的字串中的起始和終止的位置

2樓:匿名使用者

$_是模式匹配或者輸出的預設字串.。

@_沒聽說過,等待學習~~

perl語言中「if($_=~/^@/)」這句話是什麼意思?

3樓:

首先 , $_ 是 perl 中一個來自迴圈的預設變數, 如 :

@array = ( 1,2,3,4,5 );

for ( @array ) # 這時就會列印出 12345然後到 =~ , 就像 $x == $y ( 對比數字 ) , $a eq $b ( 對比文字 )

而 =~ 就是對比文字匹配了

最後就到 /..... / 之間的, 那是 "正規表示式" 的部份, 那是另一個課題了

而這句, 就是說,

"如果當前陣列的元素, 是以 @ 開頭的話, 那麼就開始做 "

perl裡用大括號括起來的變數有什麼意思變數名

阿拉希 如果大括號內是標量變數的話,那這裡的作用就是限定變數界限的。在 a r n 和 a str r n 有什麼區別 裡是沒有什麼區別的。str my name strstr your name echo str is hello my namestr is helloecho strstr is...

perl裡用大括號括起來的變數有什麼意思變數名

阿拉希 如果大括號內是標量變數的話,那這裡的作用就是限定變數界限的。在 a r n 和 a str r n 有什麼區別 裡是沒有什麼區別的。str my name strstr your name echo str is hello my namestr is helloecho strstr is...

設為預設是什麼意思,預設是什麼意思?

設為預設後達成觸發條件的事件將不再彈出選擇選單而是直接按照預設選項執行。你好親,很高興為您解答,正在整理資料打字慢請耐心等待哦大約5分鐘哦親。提問 這是什麼情況?有問題?還是正常?親,沒有問題的,正常的。提問。親,要清除預設值進入設定。然後找到應用程式。然後點選選項卡上面的全部。找到剛剛設定的預設,...