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

首頁 > 編程 > Perl > 正文

Perl簡介(適合對C語言有點(diǎn)認(rèn)識的讀者)

2019-11-18 17:23:26
字體:
供稿:網(wǎng)友
##########################################################################
#版權(quán)聲明#
##
#本篇文章的版權(quán)為作者PinHongChen先生所有.允許網(wǎng)路上的非營利#
#轉(zhuǎn)載.作者的電子郵件地址:[email protected]#
##
#本文可在下列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:[email protected](HerDoneMineChao!)
Newsgroups:tw.bbs.comp.www
Subject:BasicIntroductiontoPerl
Date:13Feb199606:54:46GMT
Organization:灣學(xué)術(shù)網(wǎng)路BBS實(shí)驗(yàn)站
Message-ID:<[email protected]>
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;

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

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

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

$x=<Thispartcanbeputwhat
youlikehere
1234567890
tillthesignasthebeginning.
END
相當(dāng)於
$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相當(dāng)於C中break,next相當(dāng)於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中沒區(qū)別.用法如:

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

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

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

結(jié)果是1234567.perl有特殊的變數(shù),$#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);
結(jié)果@a成為(1,2,3,4).

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

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

Loop也可寫成:

@weekday=('Mon','Tue','Wed','Thu','Fri','Sat');
foreach$x(@weekday){
#schedulesomething
}
結(jié)果$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";

結(jié)果就會印一行:
peterPhoneNo.=02-9110238

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

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

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

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

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

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

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

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

其它特殊變數(shù)請參考perlvar.1.


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

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


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

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

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

若要取代,則:
$d="Sep.15th,Sep.17th";
$a=~s/Sep/9/;
結(jié)果是9.15th,Sep.17th,加g(global)option如下:
$d="Sep.15th,Sep.17th";
$a=~s/Sep/9/g;
結(jié)果是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';

實(shí)際上是用所謂的reference,就像是C的address.一個(gè)純量可純存一個(gè)
reference.

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

2-dimensionarray可以如:
@a=([1,2,3],[4,5,6]);
print$a[1][2];
結(jié)果是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時(shí)結(jié)述
last;
}
print$_;
}
print$_;
last;
}
}
close(EMAIL);
可以寫得更簡化,不過那就屬於您功力的無限空間了.........


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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 91aa.app| 欧美va亚洲| 亚洲精中文字幕二区三区 | 欧洲a级片 | av成人免费在线观看 | 久草在线资源福利站 | 九九热在线视频观看 | 久久精品视频69 | av在线免费网 | 午夜伦情电午夜伦情电影 | 黄视频网站免费观看 | 欧美视频一区二区三区在线观看 | 日韩精品一二三区 | 毛片视频在线免费观看 | 精品国产一区二区亚洲人成毛片 | 黄色视频一级毛片 | 黄色作爱视频 | 国产免费乱淫av | 日日操夜夜操视频 | 久久久久久久久久性 | 久久欧美亚洲另类专区91大神 | 国产精品亚洲欧美一级在线 | 91情侣在线偷精品国产 | 一区二区久久精品66国产精品 | 欧洲精品久久久 | 黄视频免费在线观看 | 久久久久久久久久久久99 | 亚洲成人国产综合 | 欧美成人黄色片 | 国内精品久久久久影院不卡 | 深夜小视频在线观看 | 亚洲最新无码中文字幕久久 | 国产在线观看一区二区三区 | 天天夜夜草 | 免费黄色小网站 | 国产一区二区三区精品在线观看 | 午夜精品福利影院 | 久久影院在线观看 | 欧美色大成网站www永久男同 | 黄色毛片18| 国产精品毛片va一区二区三区 |