Re: [問題] 如何取得()內不定長度的字串
※ 引述《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
05/03 13:22, 1F
→
05/03 13:23, , 2F
05/03 13:23, 2F
→
05/03 13:24, , 3F
05/03 13:24, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):