Perl語言入門

來源:互聯網
上載者:User

Perl語言入門 前言 編譯指令 一標量 標量常量 數字 字串 數字和字串的轉換 標量變數 print輸出結果 比較操作符 擷取使用者輸入 undef值 標量上下文 二列表和數組 列表 數組 注意點 操作符 foreach語句 列表上下文 三關聯陣列 建立 增加修改資料 取值 刪除 四子程式 定義 調用 傳回值 形參 私人變數 my state 五語句

Perl語言入門

指令碼式的開頭#!/bin/perl
指令碼式的注釋:#
經常會提示變數下面未使用或只出現一次的意思是提醒作者這個變數名字可能寫錯了,尤其是這種不需聲明就可以使用的語言。 前言

項目需要,本文參考<perl語言入門>主要記錄一些與c/c++等進階語言不通的地方,快速入門perl
編譯指令

1.use strict:告訴編譯器接下來的代碼要嚴謹些,遵循好的編程風格,如:要求先聲明變數再使用
2.use warnning:使用警告,對不嚴謹的地方打出log 一、標量$

最簡單的資料類型,數字或者字串
標量常量 1.數字

Perl中都是以雙精確度儲存數位,沒有整數這一說,就算是整數也會被轉換成雙精確度
支援用底線分隔數字達到易讀的效果
乘冪用兩個** 2.字串

單引號中的字元都是字元本身
雙引號中的字串可能為分行符號之類的
字串拼接用.例如:’a’.’b’等價於’ab’
字串重複操作符x,’a’x4等價於’aaaa’,5x4等價於’5555’ 3.數字和字串的轉換

完全取決於操作符,如+則自動將左右轉換為數字,.自動將左右轉換為字串 標量變數

以$開始,如$a=1;
除了賦值或者聲明(事實上perl變數無需聲明),其他地方只要用到這個變數都需要有$
未初始化的變數值為udef,就是空無一物的意思,如果是數字操作使用了就類似於0,字串就類似於Null 字元 print輸出結果

print ‘a’;
輸出多個用逗號隔開,print ‘a’,’b’,2+3;
字串插入要用雙引號,$name=zjk;print “i love $name”;
將字元碼轉換為字元chr(0xaaaa),ord(‘a’)將字串轉為碼 比較操作符

比較 數字 字串
相等 = eq
不等 != ne
小於 < lt
大於 > gt
小於等於 <= le
大於等於 = ge
擷取使用者輸入
<STDIN>擷取一行輸入,以斷行符號結束,其中斷行符號被儲存在字串中chomp()去掉字串中的分行符號
undef值

未初始化的變數
未初始化的變數值為udef,就是空無一物的意思,如果是數字操作使用了就類似於0,字串就類似於Null 字元,但是undef絕不是空
undefined()函數判斷變數是不是undef,如果是返回假,不是返回真
讀到檔案結尾會返回undef 標量上下文

就是根據操作符等上下文得到標量具體的值如:@array=qw(a b c);@str=@array;(列表) $c=1+@array;(數組元素個數)同樣是@array兩個式子表達意思不一樣
標量上下文中使用列表運算式:得到的還是標量,如:$a=reverse(qw/i love/);得到evoli
scalar:強制制定標量上下文如:@dogs=qw/black,red/;print ‘there’,’are’,@dogs,’dogs’;這裡希望的到個數但是不能,需要scalar @dogs強行切換 二、列表和數組@

列表list指的是數值,數組指的是數值變數 列表

列表就類似與常量數組中的右半部分,但是用的是小括弧,如:(‘a’,’b’),可以使用任何括弧,還可以使用#’a’,’b’#
成員可以是運算式,每次使用時候都會更新這個運算式
還支援連續(1..3)=(1,2,3),(1.1..3.3)=(1,2,3)自動去掉小數部分
用qw()表示裡面的成員都是單引號字串如:qw(i love zjk)=(‘i’ ‘love’ ‘zjk’) 且成員間可用任何符號隔開,空格斷行符號都行
列表賦值:列表間還可以賦值如($a,$b,$c)=qw(a b c); 數組 1.注意點

數組和變數完全一樣的用法只不過加了個方括弧$a[0]=a,而且大小無限制,無需提前定義長度,支援非連續賦值,中間空餘的是undef
獲得數組長度用$#a,這個長度是最後一個元素的下標,也就說數組實際長度要+1
可用負數,-1代表最後一個元素,但是超出數組大小會報嚴重錯誤
引用真箇數組用@數組名,如@array=qw/a b c/;
pop:取出數組(一定操作的是數組而不是列表)最後一個元素,$a=pop(@array),括弧可以省略,若無賦值項如pop @array表示刪除數組中最後一個元素
push:插入到數組如:push(@array,1),將1插入到數組,可一次插入多個元素,且操作的必須為數組
unshift和shift對應的操作的是數組的第一個元素
splice操作的是數組中的其他任意元素如$remove=splime @array,x,n;刪除array[x]及其之後n個內容,並將這部分內容賦給$remove
splime (@array,x,0,qw(a b c));一個也不刪並插入qw在array[x]的位置
清空數組:@array=(); 2.操作符

reverse:@array=reverse(@array)或reverse qw();將列表或數組中的元素翻轉,切必須賦給數組才會改變值
sort:@so=sort(@so)或sort qw();排序,升序,想變為將序再用reverse,對數字排序預設為字串,所以拍的不準
each:每次調用時返回數組中下一個元素的索引值對,my ($a,$b) = sort(@array); foreach語句

若不控制變數,自動使用$_作為控制變數如:foreach (1..10){print $_} 列表上下文

根據操作符等上下文得到列表的值
列表上下文中使用標量運算式得到的還是列表如:@array=1*2;一個成員3 @array=undef;一個成員未初始化

<STDIN>: @input=<STDIN>;linux需要手動輸入ctrl+d,結束符,不然一直等待輸入
三、關聯陣列%
perl所特有的,key-value的數組,類似於hash,元素在內部是隨機的
1.建立

%array=(key1,value1,key2,value2);
%fruit=(“apples”=>17,”bananas”=>9,”oranges”=>”none”);用=>來分隔key和value
%fruit=@fruit;用數組建立,數組元素必須為偶數 2.增加修改資料

$array{key}=value;沒錯,就是是$,key也必須在{}裡面,如果有key了就會更改key的value 3.取值

$a=$array{key1};
@lis=keys(%array);取出array中的所有key賦給lis數組
@lis=values(%array);去除array中的所有value賦給lis數組
@lis=%array;所有內容都賦給lis數組
%array=@lis;上面建立有講到 4.刪除

delete $array{key};刪除某個key和其資料
%array=();清空 四、子程式

可以放在檔案上面或者下面無需聲明,子程式是全域的
1.定義

sub 函數名{……} 2.調用

&函數名;若函數名和內建函式名相同必須加&,若定義在調用後面且調用時候形參沒加括弧必須加
不加&:1定義在調用前面不用加&,形參的括弧也不用加;2形參帶有括弧的調用,如func($a);這種調用可以明確的看出來是個函數可以不加 3.傳回值

每個函數都有傳回值,預設最後執行運算式的結果為子程式的傳回值,所以無需制定函數傳回值類型
注意,這樣非常危險,很多潛在的傳回值,例如最後執行了print,雖然表面看上去沒有計算操作,但是print本身也有傳回值,成功與否,所以這裡一定要注意
也可以使用return來傳回值,或者在程式執行大一半時候執行返回 4.形參

形參使用更加靈活,可以在函數定義時候不必理會形參的事情,只要在裡面用@_[0]調用形參就好了@_[1]第二個參數,@_所有形參相當於數組
在函數定義時候沒有強制限制參數個數,這樣可以用foreach的方式來遍曆參數完成某些功能 5.私人變數 my

my $a;標量私人,或my ($a,$b);列表私人,只能在一個語句塊(也就是一個大括弧)中使用,一個my只能聲明一個標量
my(\$a,\$b)=@_;給私人列表賦值 state

state類似於static,在第一次調用時候賦值了,函數退出後在第二次再調用時候值保持不變 五、語句

perl語句比較靈活,融合shell和C等語言

1.舉例

$opt{‘h’} and print_usage();前運算式非空便執行下一運算式
$opt{‘h’} or print_usage();前運算式為空白便執行下一運算式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.