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

首頁 > 編程 > Perl > 正文

Perl簡介(適合對C語言有點認識的讀者)

2019-11-18 17:23:26
字體:
來源:轉載
供稿:網友
##########################################################################
#版權聲明#
##
#本篇文章的版權為作者PinHongChen先生所有.允許網路上的非營利#
#轉載.作者的電子郵件地址:honger.bbs@aidebbs.edu.tw#
##
#本文可在下列URL取得:#
#http://www.math.ncu.edu.tw/~chenym/perl/intro.html#
##########################################################################

Fromnews.ncu.edu.tw!news.cc.nctu.edu.tw!news.csie.nctu.edu.tw!aide_boardWedFeb1423:57:101996
Path:news.ncu.edu.tw!news.cc.nctu.edu.tw!news.csie.nctu.edu.tw!aide_board
From:honger.bbs@aidebbs.edu.tw(HerDoneMineChao!)
Newsgroups:tw.bbs.comp.www
Subject:BasicIntroductiontoPerl
Date:13Feb199606:54:46GMT
Organization:灣學術網路BBS實驗站
Message-ID:<3BCREM$5jj@aidebbs.edu.tw>
X-Filename:www/M.824194486.A
NNTP-Posting-Host:eo4.ee.ntu.edu.tw
Lines:307

這是小弟的一篇介紹perl的文章,希望對你有用:

:)

Honger
PPPPEEEEERRRRL
PPERRL
PPPPEEEERRRRL
PERRL
PEEEEERRLLLLLL
1.Introduction
這不是perl的完整介紹,只是想將perl向C$z=1.3e-27;

這個$是表示現在操作的是個純量(相對於list或associativearray).
在C里的
Operator,如 ,-,*,/,,^, ,--, =,-=,*=,/=,=,==,!=,&&,
||,|,&全都有,意思也不變.不過若用於字串,.(dot)是表示連接的意思.
因此.=也有類似C中 =的意思.

$x='Ihate';
$x.="awkprogramming.";
print$x;

結果為Ihateawkprogramming.字串可用單或雙括號圍住.超出一行也沒關.
也可以寫的像shellprogramming中:

$x=<Thispartcanbeputwhat
youlikehere
1234567890
tillthesignasthebeginning.
END
相當於
$x="Thispartcanbeputwhat
youlikehere
1234567890
tillthesignasthebeginning.";

字串的比較有eq,ne,gt,lt,....就像那Fortran的operator.聰明的
你猜猜就知道啦.

至於control方面,如if,while,do..while,都和C類似.如:

$sum=0;
for($i=0;$i<10;$i ){
$sum =$i;
}

大括號是不可省略的!這和C不同.也可:

$sum=0;
$i=0;
while($i<10){
$sum =$i ;
}

如果你要從loop中跳出來,last相當於C中break,next相當於continue.

$sum=0;
$i=0;
while($i<10){
if($i2==0){
$sum =$i ;
next;
}elsif($sum>50){
last;
}
}

if敘述要注意大括號是不可省,還有elseif必須寫成elsif.

2.2List
List和1dimensionarray在perl中沒區別.用法如:

@a=(1,2,3);
$a[0]-=$a[1];
print"a[0]=$a[0]";

結果就是a[0]=-1.@是表示現在在操作list.雙括號的字串中,若有變數,perl
會直接解譯.如上例中的$a[0].List可以直接連接:

@a=(1,2,3);
@b=(4,5);
@c=(@a,@b,6,7);
print"@c";

結果是1234567.perl有特殊的變數,$#a來表示@a的最後index,
所以上例中,$c[$#c]就是7,也可寫成$c[-1].那麼$c[-2]就是6了.

List還有些operator,push,pop,shift,unshift,splice,其中
push推一些元素入list:

@a=(1,2);
push@a,(3,4);
結果@a成為(1,2,3,4).

pop拉最後一個元素:
@a=(1,2,3);
$b=pop@a;
結果@a成為(1,2),$b變成3.

shift,unshift和pop,push類似不過操作在list前端.
@a=(1,2,3);
$b=shift@a;
unshift@a,0;
結果@a成為(0,2,3),$b變成1.

Loop也可寫成:

@weekday=('Mon','Tue','Wed','Thu','Fri','Sat');
foreach$x(@weekday){
#schedulesomething
}
結果$x會依序變成'Mon','Tue','Wed','Thu','Fri','Sat'等.



2.3AssociativeArray
這是使用string來做index的array,一般叫作hash.

$phone_no{'peter'}='02-9110238';
$phone_no{'john'}="06-1234567";
$name='peter';
print"$namePhoneNo.=",$phone_no{$name},"/n";

結果就會印一行:
peterPhoneNo.=02-9110238

上面兩行也可寫成:
phone_no=('peter'=>'02-9110238','john'=>'06-1234567');
=>和,一樣所以:
phone_no=('peter','02-9110238','john','06-1234567');
也可,就是相當於一個key和value,所組成的list.

2.4Subroutine
副程式可以任意擺放,perl全看得到.

subfoo{
my$x=$_[0];
my$y=$_[1];
return$x/$y;
}
$x=1;
$y=8;
printfoo(4,2);
結果是2.

上例中,my這個keyWord表示,$x,$y是在foo圍內有效(localvariable
insubroutinelexicalscope).而$_[0],$_[1]用於傳參數.perl的subroutine
呼叫參數都是放在固定@_的list中.

2.5SpecialVariables
perl常使用的defaultvariable是$_.

@weekday=('Mon','Tue','Wed','Thu','Fri','Sat');
foreach(@weekday){
#dowith$_
}

結果$_會依序變成'Mon','Tue','Wed','Thu','Fri','Sat'等.

@ARGV是perl執行時的commandlineargument,$ARGV[0]相當於C中的
argv[1].$ARGV[1]相當於C中的argv[2].C中的argv[0]放在$0.
ENV是perl執行時的environmentvariable,$ENV{'HOME'}就是user
的homepath,$ENV{'PWD'}就是currentpath.

其它特殊變數請參考perlvar.1.


2.6FileHandle
perl中主要開檔的方法:

open(FH,"test.dat");#寫入
open(FH,"greppetertest.dat|");#先經greppetertest.dat處理後的p}
close(FH);
結果會把test.dat加4位行號印出.(只寫時相當於省略$_=).


2.7RegularExpression
perl對於regularexpression有重新改寫.好用且功能強,是sed和awk的
superset.要求執行regularexpression比對的operator為~=(match),
!=(notmatch).regularexpression用/.../括住.

$line="end;";
if($line=~/end/){
print"match!";
}else{
print"NO!";
}
結果會印出match!,如果改成
if($line=~/^end/){
print"match!";
}else{
print"NO!";
}
結果會印出NO!

一般而言,
^表string的開端,
$表string的結束,
[a-z]表a到z中任一字元
pat1|pat2表pat1或pat2皆可
x*表x重0次或以上
x 表x重1次或以上
/d相當於[0123456789],/D就是相反
/w相當於[_a-zA-Z0-9],/W就是相反
/s表示space,/S表非spacecharacter

若要取代,則:
$d="Sep.15th,Sep.17th";
$a=~s/Sep/9/;
結果是9.15th,Sep.17th,加g(global)option如下:
$d="Sep.15th,Sep.17th";
$a=~s/Sep/9/g;
結果是9.15th,9.17th.另外i(case-insensitive)option可不管大小寫.

2.8Reference
Perl5.0之後允許listoflist也就可能有2-DimensionArray.
例如:

$a[0][0]=1;
$phone{$name}[0]='1234';
$phone{$name}[1]='2674';

實際上是用所謂的reference,就像是C的address.一個純量可純存一個
reference.

@a=(1,2,3);
$aref=/@a;#取@a的reference
print$aref->[0];#相當於print$a[0];
push@{$aref},4;#相當於push@a,4;

2-dimensionarray可以如:
@a=([1,2,3],[4,5,6]);
print$a[1][2];
結果是6.

使用associativearray也類似:
$database{$name}{'home'}{'address'}='No.1234,75thStreet";
$database{$name}{'office'}{'phone'}='02-8127365";

Listofassociativearray也都可以使用.

2.9Example
Email中若有uuencode的資料,可以寫perl將它extract出來.

#!/usr/local/bin/perl
open(EMAIL,"<$ARGV[0]")||die"Cannotopen$ARGV[0]:$!";
#若開不成perl會跳出且印Cannotopen...
while(){
if(/^begin/s /d/d/d/s /){
#遇到begin開頭後印出
print$_;
while(){
if(/^end/){
#遇到end時結述
last;
}
print$_;
}
print$_;
last;
}
}
close(EMAIL);
可以寫得更簡化,不過那就屬於您功力的無限空間了.........


-----ByPinhongChen--------------------------------------------------------
V1.0Feb11,1996

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品视频在线免费观看| 91色p视频在线| 亚洲一区二区三区四区在线播放| 91精品国产91久久久久久| 精品日韩中文字幕| 欧美成人精品一区二区三区| 国产精品美女在线观看| 奇米一区二区三区四区久久| 国产精品久久久久久久久久久久久久| 日韩av免费看网站| 懂色av一区二区三区| 亚洲第一网站免费视频| 亚洲国产高清福利视频| 日韩福利伦理影院免费| 欧美亚洲在线观看| 91av视频在线| 中文在线不卡视频| 欧美精品久久久久久久久久| 久久久久国产精品免费| 另类色图亚洲色图| 狠狠综合久久av一区二区小说| 日韩免费在线免费观看| 亚洲精品福利在线| 欧美插天视频在线播放| 欧美中文字幕精品| 亚洲电影免费观看高清完整版在线| 久久躁日日躁aaaaxxxx| 欧美日韩亚洲成人| 欧美乱大交xxxxx另类电影| 国产精品偷伦一区二区| 成人性生交大片免费观看嘿嘿视频| 亚洲最大成人在线| 国产精品嫩草视频| 久久福利视频导航| 日韩欧美中文免费| 538国产精品视频一区二区| 亚洲视频日韩精品| 国产精品私拍pans大尺度在线| 91精品久久久久久久| 国产精品一区二区电影| 亚洲欧美制服另类日韩| 久久久久久国产免费| 国产精品激情自拍| 久久久精品国产一区二区| 91久久精品视频| 国产精品美女免费| 国产91精品久久久久久久| 久久99精品国产99久久6尤物| 国产欧美精品久久久| 啊v视频在线一区二区三区| 51色欧美片视频在线观看| 欧美成人精品影院| 夜夜躁日日躁狠狠久久88av| 国产亚洲一区精品| 亚洲人a成www在线影院| 国产精品久久999| 国产精品美女网站| 久久久久久久影院| 欧美一级在线播放| 福利视频一区二区| 国产精品黄色影片导航在线观看| 色婷婷综合久久久久中文字幕1| 欧美激情中文网| 久久伊人色综合| 久久久久中文字幕2018| 国产精品男女猛烈高潮激情| 国产精品网红福利| 亚洲a在线观看| 91亚洲精品一区| 国产成人精品最新| 日韩欧美高清视频| 亚洲精品永久免费精品| 亚洲www视频| 成人h猎奇视频网站| 亚洲电影中文字幕| 久久久成人的性感天堂| 国产精品一区二区三区成人| 亚洲国产一区自拍| 国产一区玩具在线观看| 成人免费网站在线| 亚洲综合色激情五月| 亚洲bt欧美bt日本bt| 亚洲午夜小视频| 欧美乱妇高清无乱码| 91精品一区二区| 色综合导航网站| www.99久久热国产日韩欧美.com| 欧美裸体男粗大视频在线观看| 亚洲肉体裸体xxxx137| 欧美激情极品视频| 欧美大片第1页| 91精品国产成人www| 91精品视频专区| 国模吧一区二区三区| 国产精品美女主播在线观看纯欲| 亚洲图片在区色| 国产日韩欧美日韩大片| 国产激情久久久| 欧美诱惑福利视频| 日韩电影中文字幕| 久久久精品免费视频| 欧美中文字幕视频在线观看| 日韩视频免费在线| 丝袜美腿精品国产二区| 欧美精品久久久久久久久| 久久亚洲国产精品| 精品国产区一区二区三区在线观看| 成人疯狂猛交xxx| 亚洲精品福利在线观看| 日本精品久久久| 91精品啪aⅴ在线观看国产| 日本精品久久久久久久| 欧美成人精品在线观看| 国产日韩综合一区二区性色av| 精品久久久国产| 韩国国内大量揄拍精品视频| 亚洲bt天天射| 成人午夜在线影院| 亚洲美女久久久| 在线视频中文亚洲| 亚洲精品国产精品国自产在线| 欧美激情区在线播放| 日韩免费在线视频| 91精品国产九九九久久久亚洲| 亚洲国产日韩欧美在线动漫| 搡老女人一区二区三区视频tv| 亚洲精品久久久久久久久久久久久| 91av在线国产| 91精品视频播放| 亚洲成人激情在线| 欧美极品少妇xxxxⅹ免费视频| 91日韩在线视频| 亚洲视频免费一区| 亚洲欧美激情精品一区二区| 欧美性少妇18aaaa视频| www.久久撸.com| 亚洲视频网站在线观看| 久久综合伊人77777| 国语对白做受69| 国产黑人绿帽在线第一区| 久久五月天综合| 日韩欧美精品网站| 成人国产在线视频| 亚洲国产欧美在线成人app| 日韩电影网在线| 91亚洲va在线va天堂va国| 亚洲欧美激情四射在线日| 日本久久久久久| 久久手机免费视频| 欧美日韩成人在线观看| 日本高清视频一区| 一区二区av在线| 成人国产精品免费视频| 丝袜亚洲另类欧美重口| 欧美一级bbbbb性bbbb喷潮片| 亚洲伊人久久大香线蕉av| 亚洲欧美www| 91精品视频一区| 国模极品一区二区三区| 亚洲风情亚aⅴ在线发布| 爱福利视频一区| 日韩精品中文字幕久久臀| 亚洲美女福利视频网站| 日本电影亚洲天堂|