Re: [問題] 如何取得()內不定長度的字串

看板Perl作者 (小a)時間14年前 (2010/05/02 22:19), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《iloveyoungae (迷上西方天使)》之銘言: : 大家好 : 小弟最近在練習ㄧ個題目 : 將.lib裡面的cell 取出來 : 並且依照cell名稱另存新檔 : 目前,已經可以成功的取出來 : 但是名稱上面依舊有著(),我只想保留裡面的名稱 : 例如 : cell (FADDS1), 我只想要取出FADDS1而不要有() : 但是每個名稱不見得ㄧ樣長度 : 不知道各位大大,有沒有好的想法可以建議ㄧ下 : 謝謝 : open(open_file, "12.txt") or "error file!!"; : my $Out; : my $name; : while (<open_file>) : { : if ($_=~ m/^cell/g) : { : if ($_=~ /\s(.*\b.)/) : { : $name=$1; : open(write_file, ">$name.txt") or "error file!!"; : } : print $_; : print write_file $_; : $Skip= 1; : next; : } : if ($Skip==1) : { : $Out .=$_; : print $_; : print write_file $_; : } : if ($_=~ m/^}/g) : { : $Skip=0; : next; : close write_file; : } : } : close open_file;my $Skip; #!/usr/bin/perl $file='12.txt'; open(READ, $file) or die "$file: $!\n"; @DATA=<READ>; close(READ); foreach(@DATA) { /cell *\((\w+)\)/i and $name=$1.".txt"; if(defined $name) { push(@TMP, $_); foreach(/\{/g) { $L++ }; foreach(/\}/g) { $R++ }; if($L==$R) { print "\n#### $name ####\n".join(undef, @TMP); open(WRITE, '>'.$name) or die "$name: $!\n"; print WRITE join(undef, @TMP); undef @TMP; close(WRITE); undef $name; } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.170.66

05/03 13:22, , 1F
謝謝g大,不過好像有點問題
05/03 13:22, 1F

05/03 13:23, , 2F
顯示 12.txt:No such file or directiory
05/03 13:23, 2F

05/03 13:24, , 3F
可是12.txt明明就在正確的directory下面,有點疑慮
05/03 13:24, 3F
文章代碼(AID): #1BtOdNhp (Perl)
文章代碼(AID): #1BtOdNhp (Perl)