中晟期間電路設(shè)計私人學習內(nèi)容the study of perl_第1頁
中晟期間電路設(shè)計私人學習內(nèi)容the study of perl_第2頁
中晟期間電路設(shè)計私人學習內(nèi)容the study of perl_第3頁
中晟期間電路設(shè)計私人學習內(nèi)容the study of perl_第4頁
中晟期間電路設(shè)計私人學習內(nèi)容the study of perl_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

section2.標量數(shù)數(shù)a小數(shù)點和前置正負號均可以使用,e可以表10的次方標識;b八進制:o開頭,十六進制:ox開頭,二進制:0b開頭,如果數(shù)字太長也可以使用數(shù)字操作字符\寫遇\E數(shù)寫遇\E將其和\E間非重復(fù)操作符:x,axb即把a重復(fù)b次;Perl并不嚴格區(qū)分數(shù)字和字符,他會根據(jù)所

內(nèi)置警#!/usr/bin/perl-如果想知體的問題:加上use$數(shù)組/字符/表達式;都可以$a1print輸print 標量變量內(nèi)print$a;操作優(yōu)先比較操作<>if控制語獲取用戶輸chomp($some<STDIN>);去掉一個換行符的注:chompwhile控制語14define函define($name);$name1,否則0;空字符串為真,但是undefsection3列表與數(shù)數(shù)組內(nèi)的元單個時,采用索引的方式,索引05-1;注:@fred=qw+abcd+;$y=$name=$fred[$y-這里$name只會得到b,索引中的標量不會Perl會自動補齊,同時,讓中間的數(shù)據(jù)都是不過+1才表示數(shù)組的長度;Perl默認索引為-1時表示最后的元素,也列表直接(qw#一系列以空格隔開的數(shù)據(jù)qw相當于單引號,所以意味著很多轉(zhuǎn)義列表賦值ame,ame,mea這里多出來的數(shù)據(jù)d會補上ef;可以采用@name表示數(shù)組的整體,進行賦qw連用;

poppop表示去除數(shù)組中最后一個元素,并作為返回值返回;(方法:pop@array;)push表示添加一個或者一串元素到數(shù)組的末端;(方法:push@array,元素或者數(shù)shiftshift表示去除數(shù)組中第一個元素,并作為返unshift和push作用一樣,但是是對數(shù)組開頭spilce操作spilce@array,m,n,#other以qw()給出,并非一定要有1,m<n時,刪除從m開始后總共n個元素,并把others添加進去,將刪除的這些元2m>n時,不刪除元素,從mothers0可以直接采用print"@array";將數(shù)組輸出。foreach控制結(jié)用于整個數(shù)組或者列表foreach$name(qw*元素*或者$_:當沒有控制變量$name時,則會把內(nèi)容reversesort操作each操while(my($index,$value)=each@array){}foreachmy$index(0..$#array){print"$index:標量上下文和列表上下scalar@array強行使之變成標量上列表上下文的在列表上下文中,會把數(shù)據(jù)全部出來,需要用ctrl+D才可以跳出!dos/windows系統(tǒng)需要用ctrl+Z;@array<STDIN>;chomp(@array);chomp(@array=section4子程序定義子程序sub}置調(diào)用子程返回參數(shù)

@_參數(shù)式是_并@可以無@產(chǎn)生影響。私有變創(chuàng)建私有變量:my詞法變量當需要用my多個詞法變量時,必須采用括usestrict編譯指usestrict,有助于程序執(zhí)return操return功能:返回number,并不在執(zhí)行子程序的剩余部省略&號:***不能省略,水平太非標量返回值持久性私有變量state:表示在當前子程序完成后,state的參它和my的區(qū)別在于,后者每次調(diào)用子程序時,section5輸入與輸標準輸鉆石操作符@ARGV使用,其中的內(nèi)容:@ARGV=qw#filenamelist#;輸出到標準輸print@array";輸出內(nèi)容是他本來的樣子;print@array;輸出內(nèi)容是續(xù)的字符串;@ARGV=qw#filenamelist#;print<>;cat的功能;printsortsort功能;printf格式化輸printf"%格式類型",輸出內(nèi)容;g:d:x:表示十六進制,os:ps:在其中可以指定其輸出寬度:%m.n格式類型,m表示小數(shù)點的前保持多少位,n表示小數(shù)點后保持多少位,有時m,n為負數(shù),表示左對數(shù)組和print"%s\n"x@array,文件句表示Perl進程和外界I/O的一種聯(lián)系,不是文件打開文件句open文件句柄名,'file';打開文件句柄,指向file文件,可以file當中的任何內(nèi)容到程序中;open文件句柄名,'<file'表示只可以fileopen文件句柄名,file'表示寫入內(nèi)容到file文件當中,如果不存在file,新建之;open文件句柄名,'>>file'表示寫內(nèi)容在file中,如果存在則寫入其后,如果不存在file,新建之;open文件句柄名,open文件句柄名,'<:endconding(UTF-8)','file';

Perl-MEncode-le"print采用binmode需求:binmodeSTDOUT,':endcoding(UTF-8)';UFT-8的數(shù)據(jù)處理。my$successopen文件句柄file';if(!$success){openclosedie命令處理致命錯誤if(!open文件句柄file'){die"cannotopen:$!;}warndie用法一樣,唯一區(qū)別就是他不會終止程取代了上述dieif語句,在編譯之前加入:useautodie;檢查文件句柄是否被打開,若出if(!openPASSWD,die 以寫入或者添加模式打開的文件句柄可以在printfprint"寫入的內(nèi)容";之后利用上面寫的open"文件名";my$namejoin句柄>;在默認情況下,printf和printSTDOUT,但可以使用selectselectprint"要輸出的量print的輸出將被放在LOG里,但還是不要這么干,LOG會堆積很多文字,或者在用完之后立馬selectSTDOUT;切換回來。若是在語句間加入$|=1;那么LOG區(qū)域?qū)⒘⒖梯敵鰌rint中的語句,然后sayprint類似,但會直接在輸出結(jié)果最后加上換行在Perl5.6以后可以采用空的標量變量作為文件句明后面加_fh表示句柄。openmy$some_fh,'>>','file'ordie"couldnot Perl語言中無效多行 section6哈$key可以是字符,字符串,數(shù)字,表達式;賦值為:$hash{$key}='something';%hash=('key1','vlaue1','key2','vlaue2','key3','vlaue3');(數(shù)字不用加'',當包含\n,\t\b等

@array=%hash;print"@array";注:當print后,輸出數(shù)據(jù)的順序是的,但是my%hash1=my%inverse_hash=reversekeys和valuesmy%hash=my@k=keyshash;返回所有鍵值;my@v=values%hash;返回所有值;my$k=keys%hash;$k=3;each唯一適合用的地方就是while循環(huán):while(($key,$value)=each%hash){print$key=>$value";}foreachmy$key(sortkeys%hash){my$value=$hash{$key};}if語句就好existsif(exists delete$key=keys;deletedeleteprint$hash{keys}";print%ENV用戶來Perl所在的環(huán)境設(shè)置section7正則表達$_="aaacccedddasdaw";if(/aaa/){print"findit";}unicode由于Unicode字符能夠理解自身含義,它賦予了 ;}匹配符中返回1或者這里說了兩個元字符:.或者\可以代替除.自身的含\.表示。要想表示\時,則需要用\\表?:表示匹配前面的東西,01$_"abba";if(/(.)\1/){}這里有(.)\1表示將括號中的功能是匹配xyzzyx(xyz代表任意字符)。這里根1,2,3的含

)\1表示判斷d后是否接有與y后一樣的東西。但由于當存在有太多的\1\2\3之后難以區(qū)分,采if(/(.)(.)\g{1}/){};表示匹配.xx.x均代表任意反向\1,2,3或者\g{1,2,3}表示將前面出現(xiàn)的模/(12)\g{1}/也就是/fred(|\t)+bar表示在fredbar間存在著多于一/fred(+|\t+)bar/fredbar間只能存在一次[abscd或者[a-z],我們一般用^表示排除的意思:[^a]a之外的所有字符。\D:section8.用正則前面提到的是m//匹配符的簡寫,但m//與用/smfred.*aaa/;兩者間有\(zhòng)nmfred.*aaa/s;兩者間有\(zhòng)n用/xm/aaasdsd$sss*/x;兩者表達一樣的意義選擇一種字符解釋方式(這里是指采用/a,/u,/lascii,unicode,local來m{\Ahttp?://}i;https開頭;\z表示字符串必須以他前面的內(nèi)容結(jié)尾,后面不單詞錨位m{\bword\b}word,但不能匹配m{\bword};wordlllll,aword;m{word\b}aword,但不能匹配worda\B可以匹配所有\(zhòng)b#!/usr/bin/perl-wmy$what="larry";while(<>){if(m{\A$what}){print"findit"}}@ARGVmy$whatshift@ARGV;取出第一個元素

所以匹配模式一般總存在于if和while語句的條perl時候,必須將捕獲用ifwhile進行判斷,以防止錯誤。通過在括號內(nèi)加?:的方式,可以不捕獲它,$1捕/(?<name>1)(2)(3)(?<name1>匹配1,4name,name1作為鍵,將捕獲內(nèi)容作為值存在默認的哈希%+中,當需要時,采用$+{name},$+{name1}引ex./a{3,5}/aaa,aaaa,aaaaa三個。有時候理解復(fù)雜的模式比較時,建議加上非#!usr/bin/perluse5.010;print"$`<$&>$'\n";print"nomatchsection9用正則表達式處就是說可以用在whileif的條件語句中)用/gs/find/re和m//,qw//一樣,s///定界符也可以是多樣的,除了/g外,還可以采用/i不區(qū)分大小寫;/s匹配任何字符,/x可以加任意空白符??梢宰孕薪os///$name=~\L

splitmy@arraysplit匹配模式$strings;拆分之后是給數(shù)組@arraymy@arrayspilt;split一般會保留開頭空字段,但是會丟棄結(jié)joinjoin在功能上來看是splitmy$something=join$glue,@pieces2的數(shù)組,或者是join和splitmy@value=split/:/,"4:6:8:10";my$z=join"-",@value;$z4-6-8-$_= my$A,$B,$C捕獲的內(nèi)容放在三個變量my@arraymy$name~把匹配的內(nèi)容給一myarraymy$name=~s+())/;每次取兩個內(nèi)$_=<ooo>wilma</ooo>,and<ooo>hahah</ooo>;貪婪量詞,會留下wilma</oooand<ooo>hahah非貪婪:wilmaand^,$配合/m時表示每一行的行首和行尾;openFILE,$filenameordie"openfailled";my$lines=join'',$line=~use5.010;usestrict;$^I=".bak";表示處理過程中的備份文件后}在.bak中;perlpi.bakwes/a/b/g'fred*.dat;perl相當于#!/usr/bin/perl(-n:while(<>){})-w:section10其他控unless

unlessuntilprint"$nisanumber"ifif(){}對elsif$m++;表示將$m的值+1;my@people=qw(a,b,c,d,e);my%hash;$a$b++;表示先把$b的值給$a,forfor初始化;測試;遞增){程序主體};任何一部分last類似于break,當看到lastnextnextif(/\W/);}}print"totalis$total,validis$valid";foreach$word(sortkeys%count){print"$wordisseen

section12文件測所有文件操作測試符都寫作:-X(X表示特定的操-F/D,當前用戶-F/D,---f/d,用戶組-----( -f/d----Socket----f/d設(shè)置了steuid-設(shè)置了Setgid-設(shè)置了sticky-TTY---數(shù)-數(shù)-redo環(huán),但在redo之前執(zhí)行的語句是有效的。帶的簽),然后用在last,next,redo后面,比如LINE:while(){lastLINEif條件}1,不然執(zhí)行表達式0.andmy$name$hash{$hah}//'jim';hah不存在jim作為默認值。

KBmy$size_file=(-s$file)if(-rwox$file其中性能相當于多個測試的stat和lsat函數(shù)會得到文件或者文件句柄的很多 操1. 樹中移 (僅在Perl程序運行過程中有chdir''ordie"reasons 類似于s 中echo命令,Perl提供了文件名的a、globmy@all_files=glob代替glob方法就是,當Perl認為<>內(nèi)內(nèi)容符合句柄名 文件 的操unlink以單引號包圍要刪除的文件名,各文可以結(jié)合globunlinkglobunlink返回值是刪除成功文件的個數(shù);可以采用

rename'old',和s的mv指令一樣,還可以移動文件;可以結(jié)合glob命令完成大量文件后綴的修改。mkdirfile權(quán)限移除空采用,rmdir;但若是不為空則無法移除,這時需要采用unlink先刪除內(nèi)容9修改權(quán)限odchown在修改時,只接受數(shù)字形式的用戶標識符defined(my$user=getpwnam'a')ordie"nouser";defined(my$group=getpwnam'b')ordie"noone";chown$user,$group,glob'/home/a/*';utimeutime新的時間,新的修改時間,被修改的uttime$new_ac_time,$new_cha_time,file;file一般glob'匹配屬性'的方式來選擇用index和rindex$name=指$a在$b的第幾個字符位置出現(xiàn)(以字符為單位,不是單詞啊??崭褚脖硎咀址?開始-n表示開始搜索的位置,可以是表達式,如果沒有寫出n,默認從零開始;rindex表示從后向前搜索字符,但返回值還是正用substrmy$initial_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論