付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGE22《Perl語言入門習(xí)題答案》練習(xí)1、寫一個(gè)程序,計(jì)算半徑為的圓的周長。圓周長等于2π(π約為)乘以半徑。答案為。/home/confish/perl/girth#!/usr/bin/perl-w#thisprogramcalculateacircle'sgirth$r=;$g=*2*;print"thegirthofthecircleis$g\n";/home/confish/perl/girth2、修改上述程序,用戶可以在程序運(yùn)行時(shí)輸入半徑。如果,用戶輸入,則應(yīng)得到和上題一樣的結(jié)果。/home/confish/perl/girthpro#!/usr/bin/perl-w#abetteronetocalculategirthprint"entertheradiusofthecircle\n";chomp($r=<STDIN>);if($r>0){print"thegirthofthecircleis".$r*2*."\n";}else{print"nonavailable!\n";}/home/confish/perl/girthpro3、修改上述程序,當(dāng)用戶輸入小于0的數(shù)字時(shí),程序輸出的周長為0,而非負(fù)數(shù)。/home/confish/perl/girthzero#!/usr/bin/perl-w#calculatethegirthandprint0whentheradiusislowerthan0print"entertheradiusoftheline\n";chomp($r=<STDIN>);if($r>0){print"thegirthofthecircleis$r*2*\n";}else{print"thegirthofthecircleis0\n";}/home/confish/perl/girthzero1、2、3:(一起實(shí)現(xiàn)的)#!/usr/bin/perl-w$pai=;print"PleaseInputRadius:";$r=<STDIN>;if($rlt0){print"Thecircumferenceis0\n";}else{$l=$r*2*$pai;printf"Thecircumferenceis%.1f\n",$l;}4、寫一個(gè)程序,用戶能輸入2個(gè)數(shù)字(不在同一行)。輸出為這兩個(gè)數(shù)的積。/home/confish/perl/product#!/usr/bin/perl-w#printthetwonumber'sprint"enterthetwonumbers:\n";chomp($m=<STDIN>);chomp($n=<STDIN>);print"theproductofthetwonumbersare".$m*$n."\n";/home/confish/perl/product5、寫一個(gè)程序,用戶能輸入1個(gè)字符串和一個(gè)數(shù)字(n)(不在同一行)。輸出為,n行這個(gè)字符串,1次1行(提示,使用“x”操作符)。例如,如果用戶輸入的是“fred”和“3”,則輸出為:3行,每一行均為fred。如果輸入為“fred”和“299792”,則輸出為299792行,每一行均為fred/home/confish/perl/printer#!/usr/bin/perl-w#printastringcertaintimesdependontheusr'sprint"enterastringandanumber:\n";$str=<STDIN>;chomp($num=<STDIN>);print${str}x$num;/home/confish/perl/printer練習(xí)1、寫一個(gè)程序,將一些字符串(不同的行)讀入一個(gè)列表中,逆向輸出它。如果是從鍵盤輸入的,那在Unix系統(tǒng)中應(yīng)當(dāng)使用CTRL+D表明end-of-file,在Windows系統(tǒng)中使用CTRL+Z./home/confish/reprint#!/usr/bin/perl-w#readsomeinputandprinttheminreverseprint"enterthestringplease:\n";@str=reverse<STDIN>;print"\nthereversestringsare:\n@str";/home/confish/reprint2、寫一個(gè)程序,讀入一串?dāng)?shù)字(一個(gè)數(shù)字一行),將和這些數(shù)字對(duì)應(yīng)的人名(下面列出的)輸出來。(將下面的人名列表寫入代碼中)。fredbettybarneydinoWilmapebblesbamm-bamm例如,當(dāng)輸入為1,2,4和2,則輸出的為fred,betty,dino,和betty/home/confish/num_to_name#!/usr/bin/perl-w#readsomenumbersandoutputthematch$i=0;@names=qw/fredbettybarneydinoWilmapebblesbamm-bamm/;print"enterthenumbersplease:\n";chomp(@nums=<STDIN>);foreach(@nums){@re=@names;while($ine$_){$n=shift(@re);$i++;}$i=0;print$n,"\n";}/home/confish/num_to_name3、寫一個(gè)程序,將一些字符串(在不同的行中)讀入一個(gè)列表中。然后按ASCII順序?qū)⑺鼈冚敵鰜?。也就是說,當(dāng)輸入的字符串為fred,barney,wilma,betty,則輸出為barneybettyfredwilma。分別在一行或不同的行將之輸出。/home/confish/sort_str#!/usr/bin/perl-w#readsomestringsandsorttheminchomp(@str=sort<STDIN>);#@str=sort<STDIN>;willprintthemindiffrentlinesprint@str,"\n";/home/confish/sort_str練習(xí)1、寫一個(gè)名為&total的子程序,返回一列數(shù)字的和。提示:子程序不應(yīng)當(dāng)有任何的I/O操作;它處理調(diào)用的參數(shù),返回處理后的值給調(diào)用者。結(jié)合下面的程序來練習(xí),它檢測此子程序是否正常工作。第一組數(shù)組之和25。my@fred=qw{13579};my$fred_total=&total(@fred);print"Thetotalof\@fredis$fred_total.\n";print"Entersomenumbersonseparatelines:";my$user_total=&total(<STDIN>);print"Thetotalofthosenumbersis$user_total.\n";/home/confish/perl/subr#!/usr/bin/perl-w#asubroutinenamedtotalreturnssumofsubtotal{foreach$n(0..$#_){$sum+=$_[$n];}$sum;}my@fred=qw{13579};my$fred_total=&total(@fred);print"Thetotalof\@fredis$fred_total.\n";print"Entersomenumbersonseparatelines:\n";my$user_total=&total(<STDIN>);print"Thetotalofthosenumbersis$user_total.\n";/home/confish/perl/subr2、利用上題的子程序,寫一個(gè)程序計(jì)算從1到1000的數(shù)字的和。/home/confish/perl/suber#!/usr/bin/perl-w#usethesubroutineinlastprogramtogetthesumofsubtotal{foreach$n(0..$#_){$sum+=$_[$n];}$sum;}@num=(1..1000);$sum=&total(@num);print"Thesumof1..1000is$sum\n";/home/confish/perl/suber3、額外的練習(xí):寫一個(gè)子程序,名為&above_average,將一列數(shù)字作為其參數(shù),返回所有大于平均值的數(shù)字(提示:另外寫一個(gè)子程序來計(jì)算平均值,總和除以數(shù)字的個(gè)數(shù))。利用下面的程序進(jìn)行測試:my@fred=&above_average(1..10);print"\@fredis@fred\n";print"(Shouldbe678910)\n";my@barney=&above_average(100,1..10);print"\@barneyis@barney\n";print"(Shouldbejust100)\n";/home/confish/perl/aver#!/usr/bin/perl-w#toprintthenumberwhichislargerthantheaverage#insomesubaverage{foreach$n(0..$#_){$sum+=$_[$n];}$average=$sum/($#_+1);}subabove_average{@num=@_;@aba=();$av=&average(@num);foreach$n(0..$#_){if($_[$n]>$av){push(@aba,$_[$n]);}}@aba;}my@fred=&above_average(1..10);print"\@fredis@fred\n";print"(Shuoldbe678910)\n";my@barney=&above_average(100,1..10);print"\@barneyis@barney\n";print"(Shouldbejust100)\n";/home/confish/perl/aver練習(xí)1、寫一個(gè)程序,類似于cat,但保持輸出的順序關(guān)系。(某些系統(tǒng)的名字可能是tac。)如果運(yùn)行此程序:./tacfredbarneybetty,輸出將是文件betty的內(nèi)容,從最后一行到第一行,然后是barney,最后是fred,同樣是從最后一行到第一行。(注意使用./確保調(diào)用的是你自己的程序,而非系統(tǒng)提供的)/home/confish/perl/tac#!/usr/bin/perl-w#aprogsameascatbutreversethe@ARGV=reverse@ARGV;@a=reverse<>;print@a;/home/confish/perl/tac2、寫一個(gè)程序,要求用戶在不同的行中輸入一些字符串,將此字符串打印出來,規(guī)則是:每一條占20個(gè)字符寬度,右對(duì)齊。為了確保正確的輸出,在開頭打印出一串?dāng)?shù)字作為比較(幫助調(diào)試)。注意,不要犯19個(gè)字符寬度的錯(cuò)誤。例如,如果輸入,hello,good-bye,則輸出為:67890hellogood-bye/home/confish/perl/20str#!/usr/bin/perl-w#aprogthatprintthestringsas20wordsflush@str=<STDIN>;while($i!=5){foreach(0..9){print;}$i++;}print"\n";foreach(@str){printf"%21s",$_;}/home/confish/perl/20str3、修改上一個(gè)程序,允許用戶選擇寬度,如,用戶輸入30,hello,good-bye(在不同的行中),則每一行的寬度為30。(提示:參閱第二章相應(yīng)部分)。提示,如果選擇的寬度太長,可以增加比較行的長度。/home/confish/perl/20strpro#!/usr/bin/perl-w#aprogprintthestringsasnumberusrapiontedwordsflush@str=<STDIN>;while($i!=5){foreach(0..9){print;}$i++;}print"\n";$num=shift@str;chomp$num;$conv="%".++$num."s";foreach(@str){printf$conv,$_;}/home/confish/perl/20strpro練習(xí)1、寫一個(gè)程序,提示用戶輸入givenname(名),并給出其對(duì)應(yīng)的familyname(姓)。使用你知道的人名,或者表6-1(如果你在計(jì)算機(jī)上花了太多時(shí)間,以致什么人都不認(rèn)識(shí)):表6-1樣本數(shù)據(jù)輸入輸出fredflintstonebarneyrubblewilmaflintstone/home/confish/perl/hash#!/usr/bin/perl-w#hashsthatprintthename'sfamily$family_name{"fred"}="flintstone";$family_name{"barney"}="rubble";$family_name{"wilma"}="flintstone";print"enterthegivennameplease:\n";chomp($gn=<STDIN>);print"familynamefor$gnis$family_name{$gn}\n";/home/confish/perl/hash2、寫一個(gè)程序,讀入一串單詞(一個(gè)單詞一行)◆,輸出每一個(gè)單詞出現(xiàn)的次數(shù)。(提示:如果某個(gè)作為數(shù)字使用值是undefined的,會(huì)自動(dòng)將它轉(zhuǎn)換為0。)如果輸入單詞為fred,barney,dino,wilma,fred(在不同行中),則輸出的fred將為/home/confish/perl/counts#!/usr/bin/perl-w#hashsthatcountstheappearancetimesoftheword#printprint"enterthewordplease:\n";foreach(<>){$counts{$_}++;$counts{$_}.="\n";}sort%counts;print%counts;/home/confish/perl/counts練習(xí)1、寫一個(gè)程序,輸出所有提到fred的行(不要輸出其它行)。如果輸入字符串Fred,fredrick,Alfred,能匹配上嗎準(zhǔn)備一個(gè)小的文本文件,其中包含如:“fredlintsotne”以及類似的信息。使用這個(gè)文本文件作為此程序的輸入,以及本節(jié)下面練習(xí)的輸入。/home/confish/perl/pfred#!/usr/bin/perl-w#progprintthelinewhichcontains"fred"foreach(<>){if(/fred/){print$_;}}/home/confish/perl/pfred2、修改上面的程序,允許匹配Fred。現(xiàn)在它能匹配,F(xiàn)red,fredrick,Alfred嗎(將這些名字加入輸入文件中)/home/confish/perl/pffred#!/usr/bin/perl-w#progprintthelinewhichcontains"fred"or"Fred"foreach(<>){if(/fred|Fred/){print$_;}}/home/confish/perl/pffred3、寫一個(gè)程序,輸出出現(xiàn)句號(hào)(.)的行,忽略其它行。使用前面練習(xí)中的文件進(jìn)行練習(xí):它能找到Mr.Slate嗎/home/confish/perl/pp#!/usr/bin/perl-w#progprintthelinewhichcontainsaforeach(<>){if(/\./){print$_;}}/home/confish/perl/pp4、寫一個(gè)程序,輸出有一個(gè)字母大寫,而非所有字母都大寫的行。它能匹配Fred,而不匹配fred和FRED嗎/home/confish/perl/plg#!/usr/bin/perl-w#printthelinewhichcontainsnotcapitalsforeach(<>){if(/[a-z][A-Z]|[A-Z]+[a-z]/){print$_;}}/home/confish/perl/plg5、額外的練習(xí):寫一個(gè)程序,它能輸出所有同時(shí)提到wilma和fred的行。/home/confish/perl/pfw#!/usr/bin/perl-w#printalinewhichcontainsfredandforeach(<>){if(/wilma.+fred|fred.+wilma/){print$_;}}/home/confish/perl/pfw練習(xí)1、使用模式測試程序。創(chuàng)造一個(gè)模式能匹配字符串match。使用字符串beforematchafter進(jìn)行測試。輸出結(jié)果將其三部分放在正確位置了嗎/home/confish/perl/mm#!/usr/bin/perl-w#match"match"while(<>){chomp;if(/match/){print"Matched:|$`<$&>$'|\n";}else{print"nomatch:|$_|\n";}}/home/confish/perl/mm2、使用模式測試程序,創(chuàng)造一個(gè)模式能匹配任何單詞(\w意義下的單詞),但這個(gè)單詞必需以字母a結(jié)尾。它匹配wilma而沒匹配barney嗎它匹配Mrs.WilmaFlintstone嗎wilma&fred呢使用前一章習(xí)題的文件進(jìn)行練習(xí)(如果沒有上述字符串,則加上它們)/home/confish/perl/ma#!/usr/bin/perl-w#match"word"endswithwhile(<>){chomp;if(/a\b/){print"Matched:|$`<$&>$'|\n";}else{print"nomatch:|$_|\n";}}/home/confish/perl/ma3、修改第二題的程序,使之將由a結(jié)尾的單詞放到$1之中。同時(shí)修改源代碼,使此變量對(duì)應(yīng)的值被放在單引號(hào)之中,如$1contains‘Wilma’。/home/confish/perl/mapro#!/usr/bin/perl-w#matchwordendwithaandstoragewhile(<>){chomp;if(/(a$)/){my$temp=$1;print"\$1contains'$`$&$''\n";}else{print"nomatch:|$_|\n";}}/home/confish/perl/mapro4、額外練習(xí):修改第三題程序,使之能捕捉由a結(jié)尾的單詞之后的5個(gè)字符(如果有那么多),并將之放入一個(gè)獨(dú)立變量中。例如,如果輸入的是IsawWilmayesterday,則緊接的5個(gè)字符是yest(前有空格)。如果輸入是I,Wilma!,則只有一個(gè)字符。它現(xiàn)在還能匹配wilma嗎/home/confish/perl/mwa#!/usr/bin/perl-w#matchawordendwithaandprintthenextfivewhile(<>){if(/a\b/){my$temp=$';if($temp=~/.{0,5}/){my$match=$&;print$match;}}else{print"nomatch:|$_|\n";}}/home/confish/perl/mwa5、寫一個(gè)程序(不是測試程序),能輸出任何由空白結(jié)尾的輸入行(非換行符)。在輸出的結(jié)尾處放置一個(gè)標(biāo)記符,使之能標(biāo)記出空白。/home/confish/perl/ms#!/usr/bin/perl-w#matchawhile(<>){if(/+$/){print;}}/home/confish/perl/ms練習(xí)1、寫一個(gè)模式,它能匹配$what當(dāng)前的內(nèi)容的3份連續(xù)拷貝。也就是說,如果$what為fred,則此模式能匹配fredfredfred。如果$what為fred|barney,則此模式能匹配fredfredbarney,barneyfredfred,barneybarneybarney,或者其它的變種。(提示:你應(yīng)當(dāng)在程序的頂端設(shè)置$what的值,如my$what=‘fred|barney’;)/home/confish/perl/sfb#!/usr/bin/perl-w#matchandreplacefredthreemy$what="fred|barney";if("fredbarneybarney"=~/($what){3}/){print$`."/".$&."/".$'."\n";}/home/confish/perl/sfb2、寫一個(gè)程序,它可以得到當(dāng)前文本文件的一個(gè)拷貝。在拷貝的文件中,字符串Fred(大小寫無關(guān))將被Larry替換掉。(因此,“ManfredMann”將變成“ManLarryMann”.)輸入的文件名已經(jīng)在命令行中指定(不需要詢問用戶),輸出的文件名是對(duì)應(yīng)的輸入文件名后面加上.out。/home/confish/perl/sfl#!/usr/bin/perl-w#matchfredto$^I=".out";while(<>){s/fred/Larry/i;print;}/home/confish/perl/sfl3、修改上面程序,使之將Fred由Wilma替換,Wilma由Fred替換。如果輸入的為fred&wilma,則輸出為Wilma$Fred。/home/confish/perl/addc#!/usr/bin/perl-w#add$^I=".out";$a="/usr/bin/perl-w\n#Copyright(C)2008byYoursTrulyconfish";while(<>){s#/usr/bin/perl\s+-w#$a#i;print;}/home/confish/perl/addc4、額外練習(xí):寫一個(gè)程序在你所有的練習(xí)的答案前加上下面這樣一行:a)##Copyright(C)20XXbyYoursTruly將上面一行放在“shebang”行(Perl程序的第一行,#!/usr/bin/perl(可能隨Perl安裝的位置而有所不同,但是指第一行,譯者注))下面。你應(yīng)當(dāng)在“源文件”中修改,但請(qǐng)備份文件。假定你可以在命令行中同時(shí)輸入程序和需要的修改的文件名。練習(xí)1、寫一個(gè)程序,能重復(fù)要求用戶猜測某個(gè)在1到100之間的數(shù)字,直到猜對(duì)為止。你的程序應(yīng)當(dāng)能隨機(jī)的產(chǎn)生一個(gè)數(shù)字,使用公式int(1+rand100)。當(dāng)用戶猜測錯(cuò)誤時(shí),程序應(yīng)該回應(yīng)“Toohigh”或者“Toolow”。如果用戶輸入quit或exit,或者回車時(shí),程序應(yīng)立即退出。如果用戶猜測正確,程序也退出。/home/confish/perl/gn#!/usr/bin/perl-w#agametoguessamy$y=int(1+rand(100));print"enteranumberplease:\n";while(chomp($t=<STDIN>)){if($tne"exit"&&$tne"quit"){if($t>$y){print"towhig\n";}elsif($t<$y){print"twolow\n";}else{print"a\n";last;}}else{last;}}/home/confish/perl/gn練習(xí)1、寫一個(gè)程序,讀入命令行中的一串文件,報(bào)告其是否可讀,可寫,可執(zhí)行,或不存在。(提示:如果一個(gè)函數(shù)能一次對(duì)一個(gè)文件進(jìn)行所有的檢測將非常有幫助。)如果一個(gè)文件被執(zhí)行了chmod0操作,將報(bào)告什么(在Unix系統(tǒng)中,chmod0some_file將一個(gè)文件變成不可讀,不可寫,不可執(zhí)行的)在大多數(shù)shell中,星號(hào)(*)表示當(dāng)前目錄中的所有的普通文件。也就是說,可以輸入像./ex11-1*這樣的命令,返回當(dāng)前目錄下文件的屬性。/home/confish/perl/crw#!/usr/bin/perl-w#tocheckwhetherafileisexitshavereadabilityandforeach(@ARGV){if(-e){print"$_exits\n";if(-r){print"$_readable\n";}else{print"$_doesnotbereadable\n";}if(-w){print"$_writeable\n";}else{print"$_doesnotbewriteable\n";}}else{print"$_doesnotexits\n";}}/home/confish/perl/crw2、寫一個(gè)程序,找出命令行中存在時(shí)間最長的文件名,并報(bào)告其天數(shù)。當(dāng)參數(shù)為空時(shí),其行為如何(例如,命令行中沒有輸入任何的文件)/home/confish/perl/et#!/usr/bin/perl-w#tocheckthelongestexitsif(@ARGV){foreach(@ARGV){if(-M>$such){$such=-M;$file=$_;}}print"$filehasexits$suchdays\n";}else{print"noinputfiles\n";}/home/confish/perl/et練習(xí)1、寫一個(gè)程序要求用戶輸入一個(gè)目錄名,再改變到那個(gè)目錄去。如果用戶輸入的值是空白,則轉(zhuǎn)變到他/她的主目錄去。改變后,將這個(gè)目錄下的普通內(nèi)容(不包括有點(diǎn)(.)開頭的項(xiàng))按照字母順序列出來。(提示:使用目錄句柄還是glob更方便)如果沒有成功改變目錄,提示用戶,但不要嘗試輸出目錄里的內(nèi)容。#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex12_1if(@ARGV){chdir$ARGV[0];}else{chdir"~";}@_=glob'*';print@_;2、修改程序,使之包含所有的文件,不僅僅是那些不以點(diǎn)(.)開頭的文件。#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex12_1if(@ARGV){chdir$ARGV[0];}else{chdir"~";}@_=glob'.**';print@_;3、如果你在前面的練習(xí)中使用的是目錄句柄,使用glob重寫它。如果使用的是glob,則用目錄句柄重寫。#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex12_3print"Whichdirectory(Defaultisyourhomedirectory)";chomp(my$dir=<STDIN>);if($dir=~/^\s*$/){#Ablanklinechdirordie"Can'tchdirtoyourhomedirectory:$!";}else{chdir$dirordie"Can'tchdirto'$dir':$!";}opendirDOT,"."ordie"Can'topendirdot:$!";foreach(sortreaddirDOT){#nextif/^\./;##ifwewereskippingdotfilesprint"$_\n";}4、寫一個(gè)類似于rm的程序,刪除命令行中出現(xiàn)的任何文件。(不需要處理像rm中的選項(xiàng))#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex12_4#類似于rm的程序for(@ARGV){unlink$_;}5、寫一個(gè)類似于mv的程序,將命令行中的第一個(gè)參數(shù)重命名為第二個(gè)參數(shù)。(不需要處理像mv中的選項(xiàng),或別的參數(shù)。)允許它是一個(gè)目錄;如果是,使用相同的基本名字(basename),生成新的目錄。#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex12_5#類似于mv的程序rename$ARGV[0],$ARGV[1];6、如果你的操作系統(tǒng)支持,寫一個(gè)類似于ln的程序,能建立命令行中第一個(gè)參數(shù)的硬連接(hardlink)到第二個(gè)參數(shù)。(不需要處理ln的選項(xiàng),或者更多的參數(shù)。)如果系統(tǒng)沒有硬連接,那么輸出一條消息,指出如果可行你將進(jìn)行的操作。提示:這個(gè)程序和前面的有類似的地方,注意到這一點(diǎn)能節(jié)約你編碼的時(shí)間。#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex12_5#類似于ln的程序link$ARGV[0],$ARGV[1]orwarn"can'tlink";7、如果你的操作系統(tǒng)支持,修改上一個(gè)練習(xí)的程序,使之支持–s選項(xiàng)(在別的參數(shù)前面),來表明你想創(chuàng)建一個(gè)軟連接(softlink)而非(hardlink)。(甚至在你沒有硬連接的情況,你也有可能能創(chuàng)建軟連接。)#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex12_5#類似于ln-s的程序symlink$ARGV[0],$ARGV[1]orwarn"can'tsymlink";8、如果你的操作系統(tǒng)支持,寫一個(gè)程序來查找當(dāng)前目錄下的符號(hào)連接(symboliclinks),并將它們的值打印出來(如ls–l一樣:name->value)。#!/usr/bin/perl-wusestrict;unless(@ARGV){ die"perl$0<dir>\n";}my@file=glob"$ARGV[0]/*";foreach(@file){ chomp$_; my$link=readlink"$_"; if(defined$link){print"$_->$link\n";}}@a=`ls-l|grep-e‘->’`;練習(xí)1、寫一個(gè)程序,讀入一串?dāng)?shù)字,將它們按照數(shù)字排序,將結(jié)果按右對(duì)齊的列打印出來。使用下面的數(shù)據(jù)進(jìn)行檢測:1700004-104200190210666#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex13_1#讀入一串?dāng)?shù)字,將它們按照數(shù)字排序,將結(jié)果按右對(duì)齊的列打印出來@_=(17,000,04,,,-10,,4,2001,90210,666);@_=sort{$a<=>$b}@_;for(@_){$_=sprintf"%8s\n",$_;print;}2、寫一個(gè)程序,將下例hash數(shù)據(jù)根據(jù)姓(lastname)按照大小寫無關(guān)的字母順序進(jìn)行排序,并把結(jié)果打印出來。當(dāng)lastname相同時(shí),再按照名(firstname)排序(不用關(guān)心大小寫)。因此,第一個(gè)輸出的的名字是Fred`s,最后一個(gè)是Betty`s。具有相同familyname名字在一起。不要改變數(shù)據(jù)。輸出名字的大小寫應(yīng)當(dāng)和這里的一樣。my%last_name=qw{fredflintstoneWilmaFlintstoneBarneyRubblebettyrubbleBamm-BammRubblePEBBLESFLINTSONE};#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex13_2#my@keys=sort{"\L$last_name{$a}"cmp"\L$last_name{$b}"#bylastnameor"\L$a"cmp"\L$b"#byfirstname}keys%last_name;foreach(@keys){print"$last_name{$_},$_\n";#Rubble,Bamm-Bamm}3、寫一個(gè)程序,查找給定子串在給定字符串中出現(xiàn)的每一個(gè)位置,輸出子串出現(xiàn)的位置。例如,給定字符串為“Thisisatest.”給定子串為“is”,它應(yīng)當(dāng)輸出2和5。如果子串是“a”,它應(yīng)當(dāng)輸出8。如果子串為“t”呢#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex13_3#查找給定子串在給定字符串中出現(xiàn)的每一個(gè)位置,輸出子串出現(xiàn)的位置my$a="Thisisatest";my$b="Th";my$c=-2;while($c+1){$c=index($a,$b,$c+1);print"$c\n";}練習(xí)1、寫一個(gè)程序可以轉(zhuǎn)到某個(gè)特定的(寫入代碼中的)目錄,如系統(tǒng)的根目錄,再執(zhí)行l(wèi)s–l得到那個(gè)目錄的目錄列表。(如果你的是non-Unix系統(tǒng),使用你自己的系統(tǒng)命令,得到那個(gè)目錄的詳細(xì)列表)#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex14_1#程序可以轉(zhuǎn)到某個(gè)特定的目錄,再執(zhí)行l(wèi)s–l得到目錄列表chdir"~";system"dir"2、修改第一題的程序,將結(jié)果輸出到當(dāng)前目錄的文件中。錯(cuò)誤的結(jié)果輸出到文件中。(你不需要做任何特殊的事,這兩個(gè)文件中的任意一個(gè)都可能是空的。)#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex14_1#將結(jié)果輸出到當(dāng)前目錄的文件中。錯(cuò)誤的結(jié)果輸出到文件中chdir"~";openLOG,">>";openSTDERR,">>";my$d=`dir`;printLOG"$d";3、寫一個(gè)程序能解析date命令的輸出,判斷當(dāng)前日期是一個(gè)星期的第幾天。如果是weekday(周一至周五),則輸出gettowork;否則,輸出goplay。date命令的輸出如果是由Mon開頭,則指星期一。如果你的non-Unix系統(tǒng)沒有date命令,則偽造一個(gè)程序使之可以輸出像date命令那樣的結(jié)果。我們這里給你提供一個(gè)兩行的程序,如果你答應(yīng)不問我們它工作的原因:#!/usr/bin/envperl-wusestrict;#Date:2005-05-31#ex14_1#判斷當(dāng)前日期是一個(gè)星期的第幾天。如果是weekday(周一至周五),則輸出#gettowork;否則,輸出goplay。if(`date`=~/^S/){print"goplay!\n";}else{print"gettowork!\n";}練
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職(電子商務(wù))電子商務(wù)基礎(chǔ)期末測試題及解析
- 2025年高職康復(fù)治療技術(shù)(康復(fù)心理學(xué))試題及答案
- 2025年高職第二學(xué)年(數(shù)字印刷)可變數(shù)據(jù)印刷綜合測試試題及答案
- 2025年高職(水利水電建筑工程)水工建筑物基礎(chǔ)試題及答案
- 2025年中職(勞保產(chǎn)品銷售)防護(hù)性能階段測試卷
- 2025年大學(xué)機(jī)械應(yīng)用技術(shù)(機(jī)械應(yīng)用)試題及答案
- 2025年大學(xué)交通運(yùn)輸工程(交通工程學(xué))試題及答案
- 2025年大學(xué)(金融學(xué))金融工程試題及答案
- 2025年中職(護(hù)理基礎(chǔ))鼻飼操作試題及解析
- 2025年大學(xué)醫(yī)學(xué)檢驗(yàn)技術(shù)(檢驗(yàn)研究)試題及答案
- 2025年紹興市諸暨市輔警考試真題附答案解析
- 2026年及未來5年市場數(shù)據(jù)中國化學(xué)發(fā)光行業(yè)發(fā)展趨勢(shì)預(yù)測及投資戰(zhàn)略咨詢報(bào)告
- 2026北京市中央廣播電視總臺(tái)招聘124人筆試參考題庫及答案解析
- 《物流系統(tǒng)工程-理論、方法與案例分析(第4版)》全套教學(xué)課件
- 2025版安全標(biāo)志大全高清
- 2025-2026學(xué)年度上學(xué)期八年語文試卷
- 中國臨床腫瘤學(xué)會(huì)(csco)乳腺癌診療指南2025
- 2025年幼兒園后廚工作面試題庫及答案
- 電渣爐的維護(hù)與管理制度(3篇)
- 早產(chǎn)兒喂養(yǎng)不耐受臨床診療指南
- 外來物種入侵事件應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論