From: KIMURA Koichi Date: 1998-01-05T13:38:41+09:00 Subject: [ruby-list:5809] filtering script 木村です。今年も宜しくお願いします。 プログラム(スクリプト)の引数として渡されたファイルを別のプログラ ムで処理させた結果をスクリプトで処理したい。というときの話なんで すが、↓のように backticks(``)を使うしかないのでしょうか? #とりあえず自分で pipe(), fork(), exec()するのはなしという前提で #お願いします Perlみたいに f=open("dumpbin /symbols #{ofile}|", "r") ^ とできるとうれしいのですが… 以下のスクリプトは、*.objのファイルから必要(と思われる)シンボル を抜き出すものです。直接*.objの中身は覗けないので、dumpbinという ツールにシンボルを抜き出させています。 #ところで BCC (or C++ Builder)には同様のツールってあるんでしょうか? --- undefvars = {} while ofile = ARGV.shift print "; #{ofile}\n" #f=open("dumpbin /symbols #{ofile}|", "r") #while f.gets # print # next if !/External/ # next if !/SECT/ # /\| +(.+)$/ =~ $_ # extname = $1 # extname.gsub!(/^_/, "") # print "#{extname}\n" if extname #end #f.close s = `dumpbin /symbols #{ofile}` s.each_line("\n") { if (/External/) /\| +(.+)$/ =~ $_ extname = $1 extname.gsub!(/^_/, "") if (/SECT[0-9]/) if (/notype \(\)/) #print "function\n" print "\t#{extname}\n" if extname else #print "variable\n" undefvars[extname] = TRUE end elsif (/UNDEF/ && /notype(?! \(\))/) #elsif (/UNDEF/) print "undef #{extname}\n" undefvars[extname] = TRUE end end } end print "; variables\n" undefvars.keys.each{|i| print "#{i}\n"} #print "\t_matherr" -- 木村浩一 May the source be with you. e-mail kbk@kt.rim.or.jp kkimura@pure.cpdc.canon.co.jp