Perl入門學習筆記——標量數據

Learning Perl 

第二章 標量數據
標量是Perl裏最簡單的一種數據類型,要麼是數字,要麼是字符組成的序列。對於Perl來說,這二者能夠在內部轉換。
能夠用操做符對標量進行操做,產生的結果也是標量。
在Perl內部,老是按照雙精度浮點數的要求來保存數字並進行運算的。Perl並不存在整型變量。

浮點數直接量
直接量值某個數字在Perl源代碼中的寫法。
小數點和前置的正負號都是可選的,數字前面加上用"e"表示的指數表示法。

非十進制的整數直接量
Perl容許十進制之外的其餘進制來表示數字。八進制直接量以O開頭,十六進制以0x開頭,二進制變量以0b開頭。
非十進制直接量多了會影響閱讀。Perl容許在這些直接量中使用下劃線。

字符串
字符串能夠是任意字符組成,長度沒有限制,由於字符串能夠包含任意數據,因此能夠用它來建立,掃描或操控二進制數據。
Perl徹底支持unicode,若是在源代碼中使用Unicode書寫直接量,要手動加上utf-8編譯指令:
use utf-8;

單引號的字符串直接量
要表示反斜線自己,須要在反斜線前面加上一個反斜線字符表示轉義;要表示單引號自己時,也須要在單引號前面加上反斜線字符表示轉義。
雙引號內的字符串直接量
能夠轉義許多控制字符,或者用八進制或十六進制寫法表示任何字符。
雙引括號的另外一特性稱爲變量內插

字符串操做符
字符串能夠用.號鏈接起來,鏈接運算符必須顯式使用。
字符串重複操做符,小寫字母x。並不知足交換律。
重複次數在使用前先取整,小於1時會生成空字符串。

數字與字符串間的自動轉換
Perl會根據須要,自動在數字和字符串間進行類型轉換。

Perl內置警告信息
$perl -w program
#!/usr/bin/perl -w
use diagnostics;
能夠顯示更詳細的警告信息。可是加載警告信息到內存會比較慢。
能夠perl -wdiagnostics ./program應用。

標量變量
標量變量僅僅存儲一個值的變量。標量變量的名稱以美圓符號開頭,稱爲魔符(sigil),標識符區分大小寫。
$的意思就是取標量。
標量的賦值
雙目賦值操做符
print輸出結果
字符串中的標量變量內插
藉助代碼建立字符
chr()函數轉換代碼點爲字符;ord()轉換字符爲代碼點。

比較操做符
Perl比較操做符:<,<=,==,>=,!=。這些操做符返回值爲true or flase。
能夠用eq, ne, lt, gt, le, ge

if控制結構
if () {...;}
if () {...;} else {...;}

獲取用戶輸入
行輸入操做符<STDIN>,放在程序中但願返回標量值的位置,Perl就會從標準輸入讀取一行文本。

chomp操做符
chomp()操做符做用於單個變量,去掉字符串末尾的換行符。
chomp($text = <STDIN>);
chomp()函數實際的返回值是移除的字符數。

while控制結構
$count = 0;
while ($count < 10) {
    $count += 2;
    print "count is now $count.\n"
}

count is now 2.
count is now 4.
count is now 6.
count is now 8.
count is now 10.

undef值
undef既不是數字也不是字符串,徹底是另一種類型的標量值。
$n = 1;
while ($n <= 5) {
  $count += $n;
  $n++;
}
print "the total is $count.\n";

the total is 15.

程序開始時,$count的初始值的undef,可是並不影響程序的運行。
複製某個undef變量到另外一個變量沒有問題,可是print輸出會引起警告信息。

defined函數
判斷某個字符串是undef而不是空字符串,可使用defined函數,若是undef,則函數返回假,不然返回真。

課後習題
1. 寫一個程序,計算半徑爲12.5時,圓的周長爲多少。
2. 修改上題程序,讓用戶鍵入半徑的長度。
3. 修改上題程序,用戶輸入半徑小於0時,輸出0,而不是負數。
4. 寫一個程序,提示用戶鍵入兩個數字,而後輸出二者的乘積。
5. 寫一個程序,提示用戶輸入一個字符串和一個數字,而後以數字爲重複次數,連續輸出字符串。

答案:
1. 
$pi = 3.1415926;
$cric = 2 * $pi * 12.5;
print "The circumference of a circle of radius 12.5 is $cric.\n";
2.
$pi = 3.1415926;
print "What is the radius?\n";
chomp($radius = <STDIN>);
$cric = 2 * $pi * $radius;
print "The circumference of a circle of radius 12.5 is $cric.\n";
3.
$pi = 3.1415926;
print "What is the radius?\n";
chomp($radius = <STDIN>);
$cric = 2 * $pi * $radius;
if ($radius < 0) {
  $cric = 0;
}
print "The circumference of a circle of radius 12.5 is $cric.\n";
4.
print "Enter a string: ";
$str = <STDIN>;
print "Enter a number: ";
chomp($num = <STDIN>);
$result = $str x $num;
print "The result is \n$result.";
相關文章
相關標籤/搜索