# # xmlをシンプルにするためのプログラム # # # # 使い方 # program.pl sorcefile.xml > outpurfile # #
######################################## # 引数の数が正しいかチェック # 定数宣言 # program.exe sorcefile ########################################
#引数の数をチェックする #引数の数が正しくない場合は,プログラムの実行方法を提示して終了
## 引数を使うとき if (@ARGV != 1){ die("err. this program needs 1 argment\n inputfile.xml\n"); }
$inputfilename=$ARGV[0];
## 引数使わないとき #$inputfilename="inputfile.xml"; # XML形式の inputfile の宣言
########################## # ファイルオープン---------------------------------- # file connection open ##########################
# 読み込み専用で開く. # ファイルが存在しない場合はエラー出力を出して終了.
if(! open(SORCE_FILE,$inputfilename)){ die("err. can not open ${inputfilename}\n"); }
############################# # メイン処理 特定のタグの中身だけ出力していく# # 前提: 一行に同じタグは複数存在しない #############################
# 一行づつ読んで,不必要ならスルー
# 必要な情報ならタブ区切りにして出力
while(my $line = <SORCE_FILE>){#一行づつ読み込む # print "read line : ",$line,"\n"; #debug用 読み込んだ行をそのまま出力 chomp($line);#改行切り落とし
if(undef){ # 必ず偽(可読性用)
die("err. Code1\n"); next; }elsif($line =~/<findNGtag>/){ # タグ探し next; # 出力せずにスルー 次の行へ処理を進める }elsif(($value)=$line=~/<find1>(.*?)<\/find1>/){ # タグの中身をvalueに代入 print $value,"\n"; # タグの中身だけ出力して改行 next; # 次の行へ処理を進める }elsif($line =~/<find2>(.*?)<\/find2>/){ # タグ探し # print $line,"\n"; # 行を丸ごと出力して改行 next; }else{ next; #必要のないその他の情報を飛ばす }
}
# ファイルクローズ----------------------------------- close(SORCE_FILE);
|