上下文指的是表示式所在的位置,在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 語...