Perl

test14v3.pl

#!/usr/bin/perl#インスタンス「(」無しには非対応 $i= 0; while($line = <>){ $i=$i+1; $line =~ s#\(# \(#; $line =~ s#^\s*always.*##; #always line delete (応急処置) $line =~ s#^\s*if\s*\(.*##; #if line delete (応急処置) $line =~ s#^\s*else\…

Perl学習

●参考文献)Perl裏技集 http://www2u.biglobe.ne.jp/~MAS/perl/waza/index.html 将来利用 http://perl-users.jp/articles/advent-calendar/2009/hacker/09.html

改行モジュール対応1st(いいのできたかも?) test14.pl

改行モジュールに対応してみた! test14.pl (改行モジュール対応v0.1版)================================#!usr/bin/env perl $i= 0; while($line = <>){ $i=$i+1; $line =~ s#\(# \(#; if ( $line =~ m/^\s*module\s*([^ \t\n\r\f]+)\b/ ) { $modulenext …

数字をフォーマットにそって表示するには?(「0025」それとも「__25」?)

print でなく、 printf を使う。 例) printf ("%04d:", $i); →$i = 25 だったすると、 上記実行の結果表示されるのは、 0025: では、4ケタはそのままで最初の「00」を表示しないようにするには? 答え) printf ("%4d:", $i ); でいける。 25: つまり %04d…

まとまってきた。※module直後の改行がある場合には非対応

※「module」直後の改行に続けての「モジュール名」や 「MODULE名直後に改行してのインスタンス名」 となっている場合には、まだまだ非対応。 <解説>test13.pl では、[a-zA-Z0-9_]+や[a-zA-Z0-9\\\.\/_]+という表現をやめて、 [^ \t\n\r\f]+ :[^ \t\n\r\f]…

あ!思いついたかも 文字列( と文字列 ( <半角space+(>のうまい処理

module HOGE ( → 半角スペースあけてからカッコ と module HOGE( → 直でカッコ の区別がつかないから、単語境界を表す \b が使いづらく感じていたが、、 1行読み込んだ直後に $line =~ s#\(#\s(#; と入れてからマッチに入ればいいのでは? (\bが使いやすく…

ちょっと改善(output hoge などの宣言にヒットしない工夫(とも言えない程度の工夫)

以前掲載した内容では output , input , reg 宣言なども インスタンスのパターンとしてマッチしてしまっていたので、 「(」を加えてみた。 #( の前に改行するようなRTL書かれたらアウトだが。 ※モジュール側のパターンには「module」が入っているので心…

キャプチャつかってみた&module重複認識防止

#!usr/bin/env perl $i= 0; while($line = <>){ $i=$i+1; if ( $line =~ m/^\s*module\s*([a-zA-Z0-9_]+)/ ) {# print $_; print $i; print $line; $modulename = $1; #()内をキャプチャして変数へ } # if ( $line =~ m/^\s*[A-Z0-9_]+\s+[a-z0-9]+\s*/ ) {#…

マッチしないとき~~ を表現するには?

<Perlの話> これがマッチするとき $line =~ m/^\s*module/ これがマッチしないとき $line !~ m/^\s*module/ 記憶に残りにくいなぁ。これは。 俺は天才、俺は天才、覚えられるさ。。大丈夫さ。。

単純に。。。

module に出会ったら $flag=1; $flag=1の間 テキストの内容をファイルに出力 endmoduleに出会ったらそのループぬけると同時にflag=0にする。 その続きからまたmoduleを探し、 moduleに出会ったら $flag=1; 。。。と繰り返す。 どうよ。

できてないw

#!usr/bin/env perl#moduleで区切ってファイル出力を目指す $i= 0; while($line = <>){ $i=$i+1; if ( $line =~ m/^\s*module/ ) {# print $_; print $i; print $line; } # if ( $line =~ m/^\s*[A-Z0-9_]+\s+[a-z0-9]+\s*/ ) {# if ( $line =~ m/^\s*[A-Z0-…

ちゃんとサンプルw

■下記サンプルの実行方法 > perl perl.pl test001.v のような感じ。 ■test001.v 前記事参照 ■test.pl --------- #!usr/bin/env perl $i= 0; while($line = <>){ $i=$i+1; if ( $line =~ m/^\s*module/ ) {# print $_; print $i; print $line; } # if ( $line…

サンプル作り(9/29朝現在のもの一覧

test001.v ---------------------- module HOGEMODULE ( // No space input hoge ; output hogege; reg aaa ;reg aaa ; // hoge hoge hoge for ( i=0 ; i<0 ; i++ ) begin end DUMMY Instance (); INST instance1 ( );INST instance2( );INST \instance3 ( )…