Perl 變數
現在,我們將討論變數。你可以將變數視為包含一個或多個值的容器型別。一旦定義,變數的名稱保持不變,但其值可以變化。
Perl 有 3 種變數,最簡單的是標量,這是我們今天的主題
標量變數
這種型別的變數包含單個值。
它的名字以美元符號和 Perl 識別符號開頭(它是我們變數的名稱)。
$variable_name
命名慣例
如果你熟悉其他程式語言,那麼你會知道有關命名變數的某些規則。同樣,Perl 有三個命名標量的規則。
- 所有標量名稱都以
$
開頭。很容易記住每個名字字首為$
。把它想象成一個$scalar
。 - 同 PHP 類似,在第一個字元
$
之後,它在 Perl 中是特殊的,允許使用字母數字字元,即 a 到 z,A 到 Z 和 0 到 9,也允許使用下劃線。使用下劃線將變數名稱拆分為兩個單詞。變數名的第一個字元不能是數字 - 儘管數字可以成為名稱的一部分,但它們不能在
$
之後立即出現。這意味著$
之後的第一個字元將是字母或下劃線。熟悉 C/C++語言的人應該能夠立即識別出相似性。比如,
$var;
$Var32;
$vaRRR43;
$name_underscore_23;
但是,下面這些不是合法的標量變數名稱,
mohohoh # $ character is missing
$ # must be at least one letter
$47x # second character must be a letter
$variable! # you can't have a ! in a variable name
一般規則說,當 Perl 只有一個數值時,那就是標量。可以從裝置中讀取標量,我們可以將它用於我們的程式。
兩種標量資料型別
1.數字 2.字串
數字:
在這種型別的標量資料中,我們可以指定:
- 整數,只是它的整數,如 2,0,534 - 浮點數,它是實數,如 3.14,6.74,0.333
注意:通常,Perl 直譯器會看到像浮點數這樣的整數。例如,如果你在程式中寫 2,Perl 會看到它像 2.0000
整數文字:
它由一個或多個數字組成,可選地前面加上或減去幷包含下劃線。
Perl 示例:
0;
-2542;
4865415484645 #this also can be written with underscores (for clarity) : 4_865_415_484_645
你可以看到 - 沒什麼特別的。但請相信我,這是最常見的標量型別。他們到處都是。
浮點文字:
它由數字組成、可選擇減號、小數點和指數。
Perl 示例:
3.14;
255.000;
3.6e20; # it's 3.6 times 10 to the 20th
-3.6e20; # same as above, but negative
-3.6e-20; #it's negative 3.6 times 10 to the -20th
-3.6E-20; #we also can use E – this means the same the lowercase version -3.6e-20
![PERL 初學者教程 - 完整指南](/img/Tutorial/Perl/Perl Variable.png)
八進位制,十六進位制和二進位制表示:
它是十進位制系統的替代品。請允許我向你顯示八進位制,十六進位制和二進位制表示。一個簡短的表格提供了有關這種奇怪風格的所有重要資訊:
進位制 | 基 | 字首 |
---|---|---|
八進位制 | 8 |
0 |
十六進位制 | 16 |
0x |
二進位制 | 2 |
0b |
Perl 示例:
255; # 255 in decimal notation
0377; # 255 in octal notation
0xff; # 255 in hexadecimal notation
0b11111111; # 255 in binary notation
Perl 的所有這些值意味著相同。Perl 不以相同的格式儲存值。它將在內部將這些十六進位制,二進位制,八進位制轉換為十進位制值。
賦值是標量上最常見的操作,而且非常簡單。Perl 用於那個等號。它從右側獲取表示式的值,並將此值放入變數中。
我們來看看例子:
$size=15; # give $size value of 15
$y = -7.78; # give $y value of -7.78
你不僅可以將變數放入變數,還可以放入表示式。
$z = 6 + 12 # give $z value of 18
字串
字串:它也是非常簡單的標量型別。
Perl 中字串的最大長度取決於計算機的記憶體量。字串的大小沒有限制,任何數量的字元,符號或單詞都可以組成你的字串。最短的字串沒有字元。最長的可以填滿所有系統記憶體。Perl 程式可以完全用 7 位 ASCII 字符集編寫。Perl 還允許你新增任何 8 位或 16 位字符集。字串文字中的非 ASCII 字元。Perl 還增加了對 Unicode UTF-8 的支援。
與數字一樣,有兩種不同型別的字串:
- 單引號字串文字 - 雙引號字串文字
單引號字串文字
單引號用於包含你想要按字面意思獲取的資料。一個簡短的例子,一切都應該清楚:
Perl 示例:
#!/usr/bin/perl
$num = 7;
$txt = 'it is $num';
print $txt;
輸出
it is $num
這裡由於未使用$num 的單引號值而且文字字元’$’,’n’,‘u’和’m’被新增到$txt 的值中
雙引號字串文字
雙引號用於包含需要在處理之前進行插值的資料。這意味著轉義的字元和變數不是簡單地插入到以後的操作中,而是在現場進行評估。轉義字元可用於插入換行符,製表符等。
Perl 示例:
$num = 7;
$txt = "it is $num";
print $txt;
輸出:
it is 7
這裡由於$num 的雙引號值被新增到$txt 的值中
雙引號內插標量和陣列變數,但不是雜湊陣列值。另一方面,你可以使用雙引號來插入陣列和雜湊陣列的切片。
神祕 \n
考慮以下程式
Perl 示例:
print "hello \n";
輸出:
hello
Perl 不顯示 hello \n
,而只顯示 hello
。為什麼?因為 \n
是一個特殊符號,表示你希望在程式中顯示文字時轉到新行。下一個問題 - 還有其他特殊標誌嗎?對,還有的!但不要擔心 - 它們的數量不多。請檢視下錶
構造 | 說明 |
---|---|
\n |
換行 |
\r |
回車 |
\t |
製表符 |
\f |
換頁符 |
\b |
退格 |
\a |
警報 |
\e |
逃避 |
\007 |
任何八進位制 ASCII 值(這裡,007 =\a ) |
\x7f |
任何十六進位制值(這裡,7f = 刪除) |
\\ |
反斜槓 |
\“ |
雙引號 |
\l |
小寫下一個字母 |
\L |
將所有後續字母小寫,直到 \E |
\u |
大寫下一個字母 |
\U |
大寫所有後面的字母,直到 \E |
\E |
終止 \L ,\U |
我知道,這些特殊符號並少……但請相信我,你必須要了解它們。
字串變數
它是相同的操作,我們在數字賦值中看到。Perl 從等號的右側獲取我們的字串,並將此字串放入變數。
Perl 示例:
$string = 'tutorial'; # give $string the eight-character string 'tutorial'
print $string;
$string = $size + 3 ; # give $string the current value of $size plus 3
print $string;
$string = $string * 5; # multiplied $string by 5
print $string;
輸出:
tutorial315
如你所見,你可以將數字和字串放在相同的變數中。沒有變數類。
字串連線(.
):
連線運算子 .
聯合兩個或多個字串。記住,如果字串包含引號,回車符,反斜槓,則需要使用反斜槓轉義所有這些特殊字元。
Perl 示例:
#!/usr/bin/perl
$a = "Tom is";
$b = "favorite cat";
$c = $a ." mother's ". $b;
print $c;
輸出:
Tom is mother's favorite cat.
字串 $a
,$b
被連線並使用 .
操作符儲存在 $c
中。。
我們最後來看,
數字和字串之間的轉換:
如你所知,Perl 會根據需要自動將數字轉換為字串。Perl 如何知道我們現在需要什麼?這很簡單 - 一切都取決於運算子(我們稍後將討論運算子,現在,只接受有很多運算子,數字和字串不同)如果運算子需要數字,Perl 將使用該值作為數字。如果運算子需要字串,Perl 將使用該值作為字串。換句話說 - 你不必擔心這種轉換。簡短的例子,一切都應該清楚:
Perl 示例:
$string = "43";
$number = 28;
$result = $string + $number;
print $result;
輸出:
71
$string
的值轉換為整數並新增到 $number
的值。
新增的結果 71 分配給 $result
。
變數的範圍 - 訪問修飾符
我們可以在程式的任何地方宣告一個標量。但是你需要指定一個訪問修飾符
有三種型別的修飾符
我的 2.本地的 我們的
我的:使用它你可以宣告塊中特定的任何變數。即在花括號內。
#!/usr/bin/perl
my $var=5;
if(1)
{
my $var_2 =$var;
}
print $var_2;
沒有輸出
該程式的輸出什麼都沒有!
![PERL 初學者教程 - 完整指南](/img/Tutorial/Perl/Why no output.png)
在上面的例子中,你將看到有兩個變數宣告,如果是塊($var_2)而另一個是在 if 塊($var)之外。在塊外部宣告的變數將可以被 if 塊訪問,但是如果塊內部宣告的變數將無法被外部程式訪問。
Local:使用這個我們實際上可以將相同的變數值遮蔽到不同的值而不實際更改變數的原始值,假設我們有一個變數$a,其值被賦值為 5,你實際上可以通過以下方式更改該變數的值使用 local 關鍵字重新宣告相同的變數而不改變變數的原始值 5.讓我們看一下如何使用一個例子。
#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";
上述程式的輸出將以這種方式。
local,$var = 3
global,$var = 5
這樣我們就可以在不影響原始值的情況下更改變數的值。
our
:一旦使用訪問修飾符 our
宣告變數,它就可以在整個包中使用。假設你有 Perl 模組或者包 test.pm,它有一個用範圍宣告的變數。可以在將使用該包的任何指令碼中訪問此變數。
如果你認真對待 Perl 程式設計,那麼你應該開始使用
#!/usr/bin/perl
use strict;
這將幫助你編寫更好,更清晰的程式碼。 ‘use strict’啟用嚴格的編譯指示,這將使你使用我的關鍵字宣告你的變數。
這是一個很好的程式設計習慣
#!/usr/local/bin/perl
use strict;
$var = 10;
print "$var";
結果:錯誤
#!/usr/local/bin/perl
use strict;
my $var = 10;
print "$var";
輸出:
10