PERL的上下文環境

2021-06-18 18:11:38 字數 1362 閱讀 5608

上下文指的是表示式所在的位置,在perl解析表示式的時候,要麼希望是乙個標量,要麼希望得到乙個列表,在這裡,表示式所在的位置不同,表示式的意義就會有所不同

舉例說明:

@people=qw(fred barney hehe);

$number=42+@people;

print $number#這裡,再進行$number=42+@people時,期望獲得的是乙個標量,因而,@people會得到的是people中變數的個數,即輸出的是45

#然而如果我們的列表中元素就是乙個,或者根本就是乙個數字呢?,其實得到的結果是一樣的!

@people;

$number=42+@people;

print $number#輸出的是42

@people=qw(42);

$number=42+@people;

print $number;#輸出的是43

需要注意的是,當我們把乙個列表放在標量的上下文環境中的到的就是元素個數,這並不是一定的

某些表示式的存在就是為了產生列表。比如qw reverse等函式,這樣他們返回的是處理後的字串

$backwards=qw(yabba dabba doo);

print $backwards;

print "\n";

$backwards=reverse(qw(yabba dabba doo));

print $backwards;

print "\n";

在列表上下文中使用產生標量的表示式

@fred=7*6;

fred則是僅包含乙個元素的列表,即42

@barney="hello"."world";

//清空列表有兩種方法

@fred=undef;列表中僅有乙個元素,並且其值是undef,並未清空,undef是乙個標量,賦值給列表並不會清空

@fred=();正確的清空列表的方法,也就是給列表fred重新付乙個空列表的值

強制切換標量上下文

@rocks=qw(talc quartz jade obsidian);

print "the number is ",@rocks;#看到了這樣輸出的是石頭的名稱

@rocks=qw(talc quartz jade obsidian);

print "the number is " ,scalar @rocks;#這樣輸出的是4

,其實不一定非要使用scalar進行切換,print "the number is ".@rocks,只需構造乙個標量上下文即可

現在說下吧,在列表上下文中,@line=;獲得的是已經確定的輸入,即最後乙個回車之前的資料

在標量上下文當中,返回輸入資料的下一行,一般都是空的?(還不太清楚,待定...)

perl上下文介紹

my para 這是標量上下文,para得到的是 中元素的個數。my para 這是列表上下文,para得到的是 中的元素值。具體是什麼上下文是由等號左邊的變數型別決定的,等號左邊是標量,則是標量上下文,等號左邊是列表,則是列表上下文。強制指定標量www.cppcns.com上下文 使用scalar...

上下文 上下文棧

全域性 函式 區域性 在執行全域性 前將window確定為全域性執行上下文 對全域性資料進行預處理 var定義的全域性變數 undefined,新增為window的屬性 function宣告的全域性函式 賦值 fun 新增為window的方法 this 賦值 window 開始執行全域性 在呼叫函式...

中斷上下文 程序上下文

在學習與作業系統相關的知識時候,我們經常遇到程序上下文 中斷上下文,看似熟悉又感覺不是特別清晰。這裡我們從如下幾個方面進行描述。上下文是從英文中context翻譯過來的,指的是一種環境。上下文我們看起來不怎麼熟悉,但是我們可以看context的中文翻譯,或者我們能更加的情形些。context n 語...