亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Perl > 正文

Perl簡介

2019-11-18 17:23:26
字體:
來源:轉載
供稿:網友
##########################################################################
#版權聲明#
##
#本篇文章的版權為作者蕭永慶先生所有.允許網路上的非營利轉載.#
#作者的電子郵件地址:syc@cc.ntu.edu.tw#
##
#本文可在下列URL取得:#
#ftp://ftp.math.ncu.edu.tw/chinese/DOC/#
##########################################################################

Perl簡介-$ID$

寫在前面:有點懶懶的,不太想用腦筋構思文章,想看的人就忍耐一下吧。

Perl是什麼東西呢?Manual上是這樣寫的:PRacticalExtractionandReportLanguage
它原始的目的就是用來取代UNIX原有的sed/awk與shellscr#endoffile

前面幾個以#號開頭的行在UNIX的習慣里面是釋,所以實際上的程式
只有一行而已。不要忘掉print那一行最後的那個分號。還有要注意perl
會區分大小寫。

不過這里有個小細節要注意,就是第一行:
#!/usr/local/bin/perl
乍看之下是釋,其實它大有作用。在古早的UNIX系統里面,可執行檔分作兩種,
一種是包含機器指令的二進位檔,系統可以直接載入執行;另外一種叫做
script檔,也就是包含一些shell命令的普通文字檔:UNIX一遇到這種文字檔
就會自動載入/bin/sh去解譯與執行它。不過隨著UNIX的發展,shell越來越多,
實在不曉得script檔是用哪種shell寫的。所以就發展出一個機制,在每個script
檔的第一行(前面不可以有空白與空白行)寫個#!,然後接著寫真正要負責處理這個
script的程式檔路徑,就可以讓UNIX知道要用那個程式來處理了。另外,順便唆一下,
這個路徑後面還可以再加一個參數(oneandonlyone),如下:
#!/usr/local/bin/perl-f對
#!/usr/local/bin/perl-pi.bak對
#!perl-f-pi.bak不對->-pi.bak會被忽略。
反正寫超過一個就會被忽略就對了。

好了,回歸主題,要如何執行這個程式呢?有好幾個方法:

1.直接在命令列打:(venus是我們shell的提示號,不用輸入)
venusperlhello

2.讓perl從standardinput讀入perl程式:
venusperl
3.把hello改成可執行檔,然後再執行:
venuschmoda xhello
venus./hello

1:如果你的$PATH(或$pathincsh)有"."(目前目錄)的話
就可以不用打"./"。
2:你必須確定perl是放在/usr/local/bin/perl上,不然的話
請把這個字串改到正確的值(可能是/bin/perl,試不出來問root)。

哇!好不容易可以執行第一個程式了。結果應該就是我們期望的Hello,World了。
第二個執行的方法蠻有趣的,換句話說,你可以這樣子輸入perl程式:

venusperl(直接按ENTER)
print"Hello,World/n";
CTRL-D

CTRL-D就是UNIX的endoffile,perl處理命令的時候會整個檔案都讀入、
分析一遍後,再開始執行,所以Hello,World會在按完CTRL-D後才印出來,
而不是打print...;之後就立刻印出。
--------------------------------------------------------------------------
唆完一些背景知識後,我們可以把注意力全部集中在perl本身了。首先是
perl支援的變數型態。perl下的變數型態總共有三種:scalars(純量),arrays
ofscalars(純量陣列),associativearrays(相關陣列?實在不會翻,看下
面的解好了)。

Arrays(ofscalars)與Associativearrays的差別:

"一般所謂的arrays是一塊連續的記憶體,它的每一個元素的大小都是一樣的,
可以很快的透過數字(第幾號元素)利用CPU本身的定址能力直接取出來;
而associativearrays比較像一張對照表,給定一個值(有可能是一個字串),
要先在這張表內搜尋,找到這個『鍵』,然後才能找到相對應的值出來。

差別就是arrays(ofscalars)速度比較快,associativearrays通常都是
利用一些資料結構達成的,比較慢,不過比較有彈性就是了。"

perl的變數不需要事先宣告,直接就可以用了。

變數以$開頭,以下是幾個例子:(每一行都是獨立互不相的)

$days#asimplescalarvariable
$days[28]#29thelementofarray@days
$days{'Feb'}#onevaluefromanassociativearray
$#days#lastindexofarray@days

一整個(或者是部份的)array用@表示:

@days#($days[0],$days[1],$days[2],...$days[n])
@days[3,4,5]#sameas@days[3..5]等於($days[3],$days[4],$days[5])
@days{'a','c'}#($days{'a'},$days{'c'})

一整個assosiativearray用開頭:

趛s#(key1,val1,key2,val2,....)

對於每一種資料型態,他們的命名空間是互相獨立而不受擾的,也就是說,
$days,@days,趛s這三個符號可以同時存在而互不影響。

以上這八種表示法都可以作為lvalue,換句話說,都可以放在等號的左邊,
可以設值。如下:

$d=20;
$a[18]=1;
$days{'Feb'}=28;
@arr=('a','b','c','d','e');
@days[3,4,5]=(1,2,3);
@days{'a','c'}=('Monday','Wednesday');
甚至:($s1,$s2,$s3)=$Bar(2,3,4);

ps:前面沒有提到,不過應該很簡單,就是常數array就是用小括號括起來形成一個
"list"就對了。字串就是用單引號或雙引號括起來。詳情見後面說明。

Array@classes的大小可以由$#classes的值得到。(實際上是array長度減一,
因為$#classes是@classes最後一個元素的索引(index),而通常array都是從0開始
算的)。要改變array的大小就直接改$#classes就好了。不過縮小array并不會
真的把array的資料丟掉,$#array改大後又可以取回來了。把array刪掉的方法是

@array=();
$#array=$[-1;(兩者同義,$[是特殊變數,表示array的基數,
就是說array是由$[開始算的;array的第一個元素.
通常$[==0)

另外,如果把array當作scalar(純量)用的話,array會傳回該array的長度。

scalar(@array)等於$#array-$[ 1(末項-前項 1=長度)
如:$len=@array;

perl沒有提供多維陣列,但是有提供一些機制來利用associativearray模擬
多維陣列。例:

$foo{$a,$b,$c}=1;(等於$foo{"$a,$b,$c"}=1;)

最後,如果一個變數名稱用特殊符號開頭,那該名稱就只能該符號有一個字元,如

$;
$$
$

等。而且這些變數通常都有一些特別的意義。


常數的使用就像一般一樣:
12345
12345.67
3.1428E-10
0xffff#十六進位
0377#八進位
4_294_976_296#429976296

字串常數則用單引號或雙引號括起來。他們的效力與shell下一樣:雙引號括起來的字串
仍然會做變數和反斜線替換,而單引號不會(除了/'與//)。如:

$h="Hello";
$w="World";
$hw="$h,$w";#Hello,World
print"Item1/tItem2/n";"Item1Item2"

反斜線替換常用的和C一樣,詳情請看perlmanpage.




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产有码在线一区二区视频| 国产精品第一第二| 粉嫩老牛aⅴ一区二区三区| 97久久超碰福利国产精品…| 国产又爽又黄的激情精品视频| 久久精品视频99| 久久韩剧网电视剧| 北条麻妃一区二区三区中文字幕| 国产91精品久久久久久久| 亚洲国产高清高潮精品美女| 亚洲精品v欧美精品v日韩精品| 亚洲自拍高清视频网站| 91亚洲一区精品| 日韩欧美国产黄色| 国产999精品久久久影片官网| 亚洲夜晚福利在线观看| 成人做爰www免费看视频网站| 亚洲综合中文字幕在线| 久久在精品线影院精品国产| 精品女同一区二区三区在线播放| 97超碰蝌蚪网人人做人人爽| 在线成人一区二区| 国产精品亚发布| 精品成人乱色一区二区| 日韩中文字幕网站| 精品久久久久久久久久久久久| 日韩在线视频线视频免费网站| 亚洲最大的成人网| 亚洲精品色婷婷福利天堂| 国产偷亚洲偷欧美偷精品| 亚洲欧美日韩爽爽影院| 欧美成人免费全部观看天天性色| 在线a欧美视频| 78色国产精品| 国产精品久久久久久久app| 亚洲国产精品成人va在线观看| 91久久精品国产91久久性色| 成人免费福利在线| 韩国福利视频一区| 欧美另类69精品久久久久9999| 中日韩美女免费视频网址在线观看| 欧美成人免费全部观看天天性色| 国产精品91在线观看| 日韩亚洲精品视频| 欧美国产日韩一区二区在线观看| 91精品国产高清自在线看超| 免费成人高清视频| 国产精品美女999| 91人成网站www| 久久国产精品久久国产精品| 日韩精品中文字| 97久久国产精品| 精品成人在线视频| 5566成人精品视频免费| 欧美日韩人人澡狠狠躁视频| 性欧美视频videos6一9| 成人观看高清在线观看免费| 国产午夜精品全部视频在线播放| 亚洲人成免费电影| 欧美成人亚洲成人日韩成人| 丝袜情趣国产精品| 日韩av在线免费播放| 国产女人精品视频| 欧美综合在线第二页| 亚洲精品国产综合区久久久久久久| 在线亚洲欧美视频| 91国在线精品国内播放| 中文字幕亚洲综合久久筱田步美| 欧美成人精品在线观看| 亚洲欧美日韩高清| 欧美三级欧美成人高清www| 久久精品这里热有精品| 亚洲综合在线做性| 午夜精品一区二区三区在线视频| 欧美激情视频网| 日韩小视频在线| 136fldh精品导航福利| 日韩大陆欧美高清视频区| 国产精品老女人视频| 国产精品久久久久久中文字| 国产成人亚洲综合91精品| 久久久久久亚洲精品不卡| 国产91在线高潮白浆在线观看| 久久偷看各类女兵18女厕嘘嘘| 日韩精品极品毛片系列视频| 日韩美女视频免费看| 668精品在线视频| 日韩高清av一区二区三区| 精品一区二区亚洲| 日韩中文字幕在线免费观看| 美女福利视频一区| 国外成人性视频| 日韩视频亚洲视频| 精品成人久久av| 欧美精品在线极品| 色哟哟亚洲精品一区二区| 亚洲一二三在线| 亚洲人午夜色婷婷| 欧美日韩国产一区中文午夜| 亚洲国产精品热久久| 日韩av片免费在线观看| 国产精品91久久久| 亚洲人成人99网站| 亚洲欧洲日产国码av系列天堂| 欧美专区福利在线| 91精品啪在线观看麻豆免费| 欧美日韩成人在线播放| 在线播放国产一区中文字幕剧情欧美| 久久久亚洲影院你懂的| 欧美福利视频网站| 亚洲系列中文字幕| 日韩欧美视频一区二区三区| 久久艳片www.17c.com| 538国产精品一区二区在线| 欧美黄网免费在线观看| 91精品国产91久久久久久吃药| 久久天堂电影网| 国产成人精品免费久久久久| 国语自产偷拍精品视频偷| 亚洲精品午夜精品| 日韩久久午夜影院| 欧美精品videossex88| 中日韩美女免费视频网站在线观看| 亚洲最大的av网站| 97久久精品人搡人人玩| 国产成人亚洲综合91精品| 91av在线看| 黑人极品videos精品欧美裸| 国产成人一区三区| 日本一区二三区好的精华液| 成人网欧美在线视频| 久久久久久中文| 欧美一乱一性一交一视频| 激情久久av一区av二区av三区| 亚洲福利视频在线| 国产精品成人va在线观看| 亚洲高清色综合| 欲色天天网综合久久| 日韩欧美在线国产| 欧美性猛交xxxx久久久| 91精品国产91久久久久| 久久久成人的性感天堂| 欧美日韩午夜视频在线观看| 欧美日韩在线视频观看| 国产欧美精品日韩精品| 精品在线欧美视频| 国产美女搞久久| 欧美专区第一页| 欧美疯狂xxxx大交乱88av| 久久久国产91| 亚洲一区二区少妇| 日韩电影免费观看在线| 91在线免费视频| 亚洲精品一区二区三区婷婷月| 亚洲精品免费网站| 亚洲xxx大片| 国产日本欧美一区二区三区在线| 日韩中文字幕国产| 中文字幕日韩专区| 热门国产精品亚洲第一区在线| 日韩av综合中文字幕| 欧美一性一乱一交一视频| 亚洲国产精品人人爽夜夜爽| 一区二区福利视频|