麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Perl > 正文

Perl簡介

2019-11-18 17:23:26
字體:
來源:轉載
供稿:網友
##########################################################################
#版權聲明#
##
#本篇文章的版權為作者蕭永慶先生所有.允許網路上的非營利轉載.#
#作者的電子郵件地址:[email protected]#
##
#本文可在下列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.




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

圖片精選

主站蜘蛛池模板: 中国黄色一级生活片 | 性盈盈盈影院 | www.91视频com| 欧美成视频在线观看 | 视频在线色 | 欧美 日韩 国产 成人 | 国产羞羞视频在线观看免费应用 | 亚洲精品一区二区三区大胸 | 极品国产91在线网站 | 久草视频手机在线观看 | 久草在线观看福利视频 | 成av人在线观看 | 懂色粉嫩av久婷啪 | va毛片| 美国一级毛片片aa久久综合 | 亚洲电影在线观看高清免费 | 毛片网站视频 | 一本精品999爽爽久久久 | 色玖玖综合 | 撅高 自己扒开 调教 | 一级免费大片 | 久久精品视频亚洲 | 亚洲精品一二三区 | 免费a级观看 | 男女羞羞视频 | 欧美xxxx精品另类 | 成人毛片免费在线 | 在线亚洲免费 | 亚洲视频欧美 | 蜜桃91丨九色丨蝌蚪91桃色 | av成人在线观看 | 91短视频在线 | 九一免费版在线观看 | 日韩欧美视频一区二区三区 | 国产精品高潮99久久久久久久 | 美女视频黄视大全视频免费网址 | 一级毛片真人免费播放视频 | 97中文字幕在线观看 | 九九热精品在线 | 国产一级免费电影 | 97青青|