Per語言入門第4版學習筆記-第二章標量資料

action929發表於2009-08-04
第二章標量資料
2.1數字
2.2 字串
2.3 Perl內嵌的警告
2.4 標量變數
2.5 print輸出
2.6 if控制結構
2.7 使用者輸入
2.8 chomp 操作
2.9 while控制結構
2.10 undef 值
2.11 defined 函式[@more@]

第二章標量資料
Perl 也有資料型別—標量。標量是Perl 中最簡單的資料型別。大多數的標量是數字(如255 或3.25e20)或者字串(如hello◆或者蓋茨堡地址)。
Perl 幾乎以相同的觀點來看待它們。

2.1數字
2.1.1 所有數字內部格式是一致的
對Perl來說,所有整數和浮點數都被當作雙精度浮點數來處理。

2.1.2 浮點數
1.25 255.000 255.0
7.25e45 #7.25x10 的45 次方(一個大整數) -6.5e24 # -6.5x10 的24 次方(一個大的負數)
-12e-24 #- -12x10 的-24 次方(很小的負數) -1.2E-23 #指數符號可以大寫(E)

2.1.3 整數
perl允許你用 _ 來分開數字 61298040283768 可以寫成 61_298_040_283_768

2.1.4 非十進位制整數
八進位制以0開頭
十六進位制以0x開頭
二進位制 0b 開頭

oct() 可以將像二進位制和八進位制的字串 轉換成 數字
hex() 可以將像十六進位制的字串 轉換成 數字

2.1.5 數字運算子
+ - * / % **
其中 % 的2個運算元如果是浮點數的話,會先變成他們對應的整數。

2.2 字串
perl中的字串沒有任何限制

2.2.1 單引號字串
只有單引號和反斜槓是特殊字元
如果要表示單引號,就要用 ' 如果要表示反斜槓,就要用

2.2.1 雙引號字串
這時候 反斜槓 就會變成轉移字元 例如 n 表示輸出新行 t 表示輸出tab
雙引號字串中的轉義符
符號含義
n 換行
r 回車
t 製表符
f formfeed
b 退格
a 響鈴
e escape(ASCII 中的escape 字元)
07 任何八進位制值(這裡是,007=bell(響鈴))
x7f 任何十六進位制值(這裡是,007=bell)
cC 一個控制符(這裡是,ctrl +c)
反斜線
” 雙引號
l 下個字元小寫
L 接著的字元均小寫直到E
u 下個字元大寫
U 接著的字元均大寫直到E
Q 在non-word 字元前加上,直到E
E 結束L,E 和Q

雙引號字串另一個性質是可進行變數內插,這是說當使用字串時,如果字串中含有變數名,將由變數的當前值替換它。

2.2.3 字串運算子
字串可由 . 運算子連線
字串重複運算子 x
"frd" x 3 結果是 frdfrdfrd
重複次數如果是浮點數 會轉換成 小於等於它的整數
重複次數小於0 ,會產生空串.

2.2.4 數字和字串之間的自動轉換
perl會自動在數字和字串之間轉換
當在需要數字的地方使用了字串(如,乘法),Perl 將自動把字串轉換為其等價的數字,如“12fred34”* “3”將給出36 而不會用任何提示。當一個不含任何數字的字串將別轉換為0。如,將“fred”當作數字來使用時。

2.3 Perl內嵌的警告
執行程式的時候,可以把警告開啟
perl -w my_program
也可以在檔案中加入
#! /usr/bin/perl -w

在 perl5.6 以後的版本中,可以這麼寫
use warnings;
使用 診斷(diagnostics) 可以看到更詳細的資訊
use diagnostics;

2.4 標量變數
標量變數可以存放一個標量值
標量變數的名字 由 $開頭 由數字,字母和下劃線 組成 ,但是不能由數字開頭.

2.4.1 選擇好的變數名

2.4.2 標量賦值
$barney = $fred + 3;# 將$fred 的值加上三賦給$barney (20)
$barney= $barney*2;#將變數$barney 乘2 再賦給$barney (40)

2.4.3 二元賦值運算子
$barney = $barney*3; 等價 $barney*=3;
$str = str . “”; #$str 後接空格 等價 $str .= “”’; #同上

2.5 print輸出
可以將一串值賦給print,利用逗號分開:
print “The answer is ”,6*7, “.n”;

2.5.1 字串中標量變數的內插
在字串中變數前($符號前)加上反斜線(),變數將不會被內插(替換)
Perl 提供了一種類似 於shell 的分隔符:花括號({})。

2.5.2 運算子優先順序和結合性

2.5.3 比較運算子
對於數字的比較,Perl 提供了< <= == >= !=
對於字串比較,Perl 有如下的一些有趣的字串比較符:lt le eq ge gt ne

2.6 if控制結構
2.6.1 Boolean值
if else
* 對於數字 0是false ,其它為true
* 對於字串 空串為false,其它為true
* 如果既不是數字也不是字串 則轉換為數字或者字串之後再利用上面的規則
但是有個特殊的,就是字串 '0' 是 false,因為它等同於數字 0

2.7 使用者輸入
Perl程式從鍵盤上得到輸入,有個簡單的方法:使用行輸入運算子(line-input operator),
如果想更多的控制輸入,可以使用Term::ReadLine 這個模組,在CPAN 中可以下載到。
$line = ;
if($line eq “n”){
print “That was just a blank line!n”;
}else{
print “That line of input was: $line”;
}

2.8 chomp 操作
chomp 函式 如果字串結尾有換行符,chomp可以去掉它。
使用chomp 的最常用方法是:
chomp ($text = ); #讀入,但不含換行符
chomp 是一個函式。作為一個函式,它有一個返回值,為移除的字元的個數。
$food = ;
$betty = chomp $food; #得到值1
如上,在使用chomp 時,可以使用或不使用括號()。這又是Perl 中的一條通用規則:除非移除它們時含義會變,否則括
號是可以省略的。
如果結尾有兩個或兩個以上的換行符,chomp 僅去掉一個。如果沒有,那什麼也不做,返回0。

2.9 while控制結構

2.10 undef 值

2.11 defined 函式
要分辨其是undef 還是空串,可以使用defined 函式,它將在為undef 時返回false,其餘返回true。

2.12 練習
1.
#!/usr/bin/perl
$a=12.5 * 2 * 3.141592654;
print $a;

2.
#!/usr/bin/perl
$b=;
$a=$b * 2 * 3.141592654;
print $a;
~
3.
#!/usr/bin/perl
$b=;
if ( $b < 0 ) {
$a=0;
}else{
$a=$b * 2 * 3.141592654;
}
print $a;
~
4.
#!/usr/bin/perl
print "Please input number 1: ";
$a=;
print "Please input number 2: ";
$b=;
print "The result is ",$a*$b,"n";

5.
#!/usr/bin/perl
print "Please input string : ";
$a=;
print "Please input line num: ";
$b=;
print $a x $b ;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133835/viewspace-1024876/,如需轉載,請註明出處,否則將追究法律責任。

相關文章