2011年10月6日 星期四

變數(Scalar)

變數(Scalar)

變數,你可以想像是一個存放空間,可以存放數字、文字、甚至特殊符號。

Perl跟其他語言不一樣,不用特地宣告說,這個新變數是什麼類型,

有的程式語言,你要先宣告說,這個變數存的是數字,還是其他類型。

所以Perl的變數用法上很簡單,但是自己要知道變數存的是什麼,這樣才不會出錯。

Perl敘述用錢字符號($)表示變數,後面要賦予這個變數的名稱,並且要以英文開頭,

可以再給予英文以及數字,像是$a$a11$aaa1

要注意,大寫、小寫視為不同變數,別搞混了!

直接看例子吧!底下是程式碼:

$a = 0;

$b = 1;

print $a+$b;

執行結果就會是 1


很直覺吧!不過有個地方要注意,這是非資訊背景的人,

常常會搞不懂的地方,上面程式碼中的等號(=),要當作取代(或是覆蓋)

所以程式碼的解讀要從右邊,解釋到左邊

$b = 1; 這個敘述句,用「數字1變數$b取代」這樣的方式解讀,

這樣才不會陷入數學的邏輯裡面。

一樣,我們舉個例子:

$a = 0; # 從右邊解讀回來,變數$a被0取代(覆蓋)所以現在$a裡面的值是0

$a = $a+1; # 從右邊解讀回來,經上式,$a+1其實就是0+1,以右式會是1

# 接著,右式的1,把左邊的$a取代(覆蓋),以現在$a裡面的值是1

$a = $a+1; # 原理同上,所以現在$a裡面的值是2

print $a; # 印出 $a到螢幕上

執行結果就會是 2


上面的例子是數字部分,接下來談談字串部分,

Perl可以使用單引號(')雙引號(")來表示字串,但是使用上略有不同。

一樣,我們直接看例子:

$a = "這個變數是\t字串"; # 這裡使用雙引號

$b = '這個變數是\t字串'; # 這裡使用單引號

print "$a\n"; # 印出$a以及換行一次

print "$b\n"; # 印出$b以及換行一次

執行結果會是





看出差異了吧,單引號會無法使用像是\n(換行字元)和\t(跳格字元)這些特殊字元

因此在單引號中,這些字元都會被當作文字,而完整的呈現。

其他特殊字元還有:

\a 會發出嗶一聲的警示聲
\e 跳脫符號(escape)
\f 換頁
\n 換行
\s 空白字元
\t 跳格字元 (Tab)

其他的就自行搜尋囉!

Perl的變數不用宣告類別,但是會有個問題,

如果變數裡都是數字,但是我只想做字串處理怎麼辦?

只要記得,數字跟字串各有各的運算方式

像是數字用加號(+)計算,字串用點(.)連接

我們直接看例子:

$a = 0;

$b = 1;

print $a+$b; # 當作數字運算

執行結果會是 1

而換成字串的話,

$a = 0;

$b = 1;

print $a.$b; # 當作字串來處理

執行結果會是 01

透過這樣的方式,可以讓變數依照你的需要,當作數字或是字串來處理。


既然講到了運算,那就要提一下Perl的運算式,

Perl的運算跟日常生活的一樣,

一樣會進行先乘除、後加減的動作。(即是先處理乘號、除號,再處理加減)

不過,不同的是,

Perl的運算裡,沒有數學裡的中括號、大括號(有別的用途)

所以,跟工程數學計算機的操作很類似,都是用小括號把想先行計算的部分括起來,

除了這些簡單的數學運算符號以外,

還有一些比較特別的,而你可能必須要記下來的符號,像是:

++  --       分別代表 遞增、遞減 (因此 $a++相當於 $a=$a+1)
% 求餘數
&& AND邏輯;即是"並且"的意思 (兩條件都要成立)
|| OR邏輯;即是"或"的意思 (任一條件成立即可)

更多的符號我們以後用到時,阿逸會再做解釋。

沒有留言:

張貼留言