作者giacch (小a)
看板Perl
標題Re: [問題] 如何取得()內不定長度的字串
時間Sun May 2 22:19:01 2010
※ 引述《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
推 iloveyoungae:謝謝g大,不過好像有點問題 05/03 13:22
→ iloveyoungae:顯示 12.txt:No such file or directiory 05/03 13:23
→ iloveyoungae:可是12.txt明明就在正確的directory下面,有點疑慮 05/03 13:24