作者abliou (Art of Life)
看板perl
標題Re: [請益] open() 的限制?
時間Wed Jun 7 00:36:23 2006
※ 引述《akoba ()》之銘言:
: 我從input檔讀入data,以data當作output檔的檔名
: 可是我遇到了問題,output檔一直無法建立
: 想請教是什麼問題
: 以下是code...
: open(Input,"<","test");
: $Line = <Input>;
: ($Contig_gi,$Est_gi) = split(",",$Line);
: $Path = "C:/Perl/bin/Project/temp/$EST_ID.txt";
: open(Output,">",$Path) or die;
: print Output "hello";
1.
open file,">PATH+FILENAME";
有網友說你的寫法也行..說真的你open的語法我是第一次看過...(羞愧...)
可否請教您語法參考何處??
2.
你後面沒有close的動作...也就是少一個存檔的步驟....
有網友有提到..
你何不先試看看??
3.
感覺上你寫的語法變數設定有點多...以前還在用VB的時候這麼寫看起來還不會這麼吃力
但現在perl用久了整個人就被perl養壞了...也養懶了...(不知道是好是壞...)
建議你變數設定少一點..一方面方便維護...一方面debug也輕鬆許多...
4.
所以我會這麼改寫你的東西....(有錯或者有更縮短的寫法請各位大佬指正..拜託..)
open Input,"<test";
($Contig_gi,$Est_gi) = split(",",<Input>);
open Output,">C:/Perl/bin/Project/temp/$EST_ID.txt" ;
print Output "hello";
close Input,Output ;
我相信會有更好更簡潔的寫法....
這段程式碼中有一些匪夷所思的部份寫法..似乎是為了寫給迴圈用的..
所以有網友猜這不是你全部的程式碼....
倘若確定就是這幾行不會用的迴圈...那這些動作五行應該就能解決(估計..)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.136.76
※ 編輯: abliou 來自: 218.166.136.76 (06/07 00:45)
推 randylau:open 要讀取的話 open("filename") 就可以了吧 06/07 00:47
推 abliou:喔??還有這招??..感謝!! 06/07 00:48
→ randylau:是有要把這個 "檔案" 做特殊處理才需要pipe或者redirect 06/07 00:48
→ abliou:不過感覺上這個case似乎要對內容做處理... 06/07 00:49
→ abliou:感覺上這個程式只是切一部份程式碼出來... 06/07 00:50
推 akoba:我是看..activeperl的doc裡寫的... 06/07 01:27
→ akoba:這只是一部份程式碼...我切出來做test的... 06/07 01:31
→ akoba:還有..我用了你的程式碼去跑一次...結果預設的檔案並沒有如 06/07 01:31
→ akoba:跑出來..... 06/07 01:32
→ akoba:之前再做test..有用變數$i =1去做檔名.... 06/07 01:32
→ akoba:用這個方法可以確定跑得出來...所以我才有疑問... 06/07 01:33
→ akoba:我在猜是不是perl在直譯的時候有先去對開檔的動作 06/07 01:33
→ akoba:跑過一次..向前面變數的用法..perl直譯器可以確定有實際的檔 06/07 01:34
→ akoba:名..而用開檔的動作去assign變數...或許perl不吃這套吧.. 06/07 01:35
→ akoba:不過這只是我猜測....還是要請教各位..謝謝!! 06/07 01:36