Perl 板


LINE

※ 引述《sqrt1089 (李崩子)》之銘言: : 首先我有2個檔案分別是a.txt跟b.txt : a.txt內容 : a 6 10 : b 2 5 : c 3 9 : b.txt內容是:123456789abfewfwegry(就是一串字) : 以下是我的程式碼(for一個輸入) : ========================================================= : #!/usr/bin/perl -w : open (FH,"a.txt")||die"File open Error!\n"; : chomp(my $input=<>); : while(<FH>){ : @in=split/\t/;chomp; #a.txt用tab為分隔 : if($input eq $in[0]){ : $x=$in[1]-1; : $y=$in[2]-1; : open (TXT2,"b.txt")||die"File open Error!\n"; : while(<TXT2>){ : @strs=split//; : while($x<=$y){ : $element=$strs[$x]; : $x++; : push(@out, $element); : } : } : } : } : print @out,"\n"; 有幾個個人小小建議 1.程式裡面除非必要,不要包太多層 這樣會造成閱讀的困難 也就表示你改code要花更多時間 例如 if(e) { while(c) { if(a==b) { } } } 如果真的要這樣寫 我會建議在 } 後面補上 以下這種註解 }#End if(a==b) ps:這是範例僅供參考 程式裡面的範例,剛好就是這個case :while(<FH>){ : @in=split/\t/;chomp; #a.txt用tab為分隔 : if($input eq $in[0]){ : ..... 以上只有單個if沒有else 可以改成 while(<FH>){ @in=split/\t/;chomp; #a.txt用tab為分隔 #當輸入不等於a.txt的第一欄元素時 跳過不處理 next if($input ne $in[0]); #處理 .. 2.不要作重複開檔的動作 因為程式碼裡面沒有對b.txt作邊讀邊寫的演算 沒必要每次處理都開一次b.txt 並且一個open 就要配上一個close (除非有特別處理) 3. : @strs=split//; : while($x<=$y){ : $element=$strs[$x]; : $x++; : push(@out, $element); : } 6行程式 其實用substr()一個函式就解決了XD substr($string, $start, $length); 以上是小小建議:) 如果只是只run一次就不會在用的code 那就當我以上沒說 用過一次就丟的 怎樣寫都可以 只要正確就好XD --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.245.106
1F:推 sqrt1089:恩感謝。我把substr改過去了,只是他的寫法應該是 11/11 21:51
2F:→ sqrt1089:substr($string, $start, $length);其中$length=大-小 11/11 21:52
3F:→ sqrt1089:因為我測substr($string,3,5);是從第4個值開始讀5個。板 11/11 21:53
4F:→ sqrt1089:上的高手真多,讓我受益良多!!!再一次感謝!! 11/11 21:53
5F:→ rkcity:是取多長沒錯呀 11/11 22:02
6F:→ sqrt1089:那我被end會錯意了,我以為是尾巴,囧! 11/11 22:11
修文章 把$end 改 $length ※ 編輯: jjt 來自: 114.32.245.106 (11/11 22:41)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP