標籤:perl linux
1、Perl
Practical Extraction and Report Language:實用摘錄與報表語言
2、多行注釋
(1) =需要頂格寫
= description
statement;
=cut
(2)末尾的description需要頂格寫
<<description;
print "Hello,world!\n";
description
3、數字:
所有數字在Perl內都以雙精確度浮點數格式儲存;
5**3:5*5*5;
4、字串:
最短的字串為空白字串,最長的沒有限制。(Perl會專門儲存字串的長度)
單引號字串:只有單引號和反斜線可以轉義,如“\n”表示反斜線和n兩個字元,不表示分行符號
雙引號字串:支援變數插入、支援各種反斜線轉義,如“\n”表示分行符號
反斜線轉義:
\l:將下個字元轉為小寫;\L:將\E為止的字元全部轉為小寫;
\u:將下個字元轉為大寫;\U:將\E為止的字元全部轉為大寫;
\Q:將\E為止的非單詞字元加上反斜線;
\E:結束\L、\U、\Q
用英文句號“.”連接字串,如“hello”."world" = "helloworld"
字串重複操作符:x,右邊的數字(取整數)表示重複次數,例:"hello" x 3 = "hellohellohello",5x4 = “5555”
變數插入:
$word = "hello";
$words = "$word world!" = "hello world!";
如果$word後邊緊跟字元,可以採用:$words = "${word}world!";,或者$words = "$word"."world!";
5、Perl會根據需要自動在字串和數字之間進行轉換
數學計算中字串的非數字部分將會略過,如“12read32”*3 = 36;
不含數位字串轉為0;
6、警告資訊
(1)運行時使用:perl -w my_program
(2)程式中聲明:#!/usr/bin/perl -w 或者#!perl -w
(3)#!/usr/bin/perl
use warnings
(4)更加詳細,會導致程式啟動變慢:
#!/usr/bin/perl
use diagnostics
7、變數
以$開頭,區分大小寫。變數一般小寫。
8、比較操作符
==:eq、!=:ne、<:lt、>:gt、<=:le、>=:ge;
9、布爾值
數字:0為假,其他都為真
字串:Null 字元串為假,其他都為真
其他類型:轉為字串或者數字再判斷
字串‘0‘和數字0是一個值,因此為假
10、擷取使用者輸入:<STDIN>
chomp:去除字串末尾的最後一個分行符號,返回移除的字元數(0/1),例:chomp($text = <STDIN>):讀取輸入,不含分行符號;
可以一次去除列表中元素的分行符號,例:chomp(@lines)
命令列輸入的資料帶有分行符號,預設都用chmop處理一下。
11、undef:數字表示0,字串表示Null 字元串。
defined($n):判斷變數n是否定義
$n = undef:建立一個未定義的變數;
12、數組
數組中最後一個元素的下標:$#arry和-1
@:引用整個數組,例:@Rocks = qw/ bedrock slate lava/ = {"bedrock","slate","lava"}
數組名會被展開為元素列表,逐個賦值給新數組,例:@quarry = {@Rocks,"new",undef} = {"bedrock","slate","lava","new",undef}
pop和push用於運算元組最後一個元素:$num = pop(@arry) = pop @arry; 也可pop @arry,數組為空白的話pop返回undef,可以將一個數組push到另外一個數組
shift和unshift用於運算元組第一個元素,$num = shift(@arry),unshift @arry,@others
數組內容可以插入到雙引號字串中,以空格隔開,例:print "quartz @Rocks lime" > "quartz bedrock slate lava",此處會導致電子郵件地址被誤認為數組,可以用\轉義或者用單引號。
某個變數後跟著"[",需要將"["隔開,避免被當作數組,例:print "this is $(fread)[3]"、print "this is $fread\[3]";
13、範圍操作符:... 例:(1...5) = (1,2,3,4,5)
14、qw 簡寫:qw{apple good hello} = {"apple","good","hello"}
可以使用任何標點符號作為定界符:qw{apple good hello} = qw(apple good hello) = qw!apple good hello! = {"apple","good","hello"}
15、列表賦值
($first,$last) = ("first name","last");
左邊變數個數小於列表值個數,多餘的值被忽略,左邊變數個數大於列表值個數,未賦值的變數是undef
16、foreach可以遍曆列表中的值,遍曆後控制變數仍然是迴圈之前的值,例:foreach $rock (@Rocks)();迴圈之後$rock還是本來的值
17、$_
Perl的預設變數,在未指定變數和數值時,使用"$_"的值。例:foreach沒有指定遍曆值時,用“$_”替代
18、reverse
按照相反的次序返回列表元素
19、sort
讀取列表的值,根據內部的編碼排序,一般為ASC|| 編碼。
不能將數字當作字串排序,否則101會在90前邊,1開頭的會排在9前邊
20、上下文
列表上下文中,產生元素的列表
標量上下文中,產生數組元素的個數
強制指定標量上下文:scalar
21、清空數組:@arry = {};
錯誤做法:@arry = undef;得到一個列表,僅有一個未定義的元素。