昨日のErlang簡易Runスクリプトを改良

昨日は採集結果を自動で表示してくれるスクリプトを作ったのだが、やっぱり気に入らなくなりもう一度Rubyで自動実行しないのを書いてみた。

#!/usr/bin/ruby                                                                 

def execute_erlang_command()
  # 現状の以下の正規表現では、複数の引数及びタプル、リストに対応してないので、  
  # 正規表現を修正する必要がある。                                              
  # ただ、普通の正規表現の使い方を逸脱するほど複雑になりそうなので、            
  # (リストやタプルが多重的に内包されてるときの処理はどうするんだろう…)        
  # 気が向いたときにすることにする。                                              
  /(^.*?):(.*?)\((.*?)\)\.?$/ =~ ARGV.shift
  print `erl -noshell -s #{$1} #{$2} #{$3 if $3 != nil} -s init stop`
end

if __FILE__ == $0
  execute_erlang_command
end

上のスクリプトをrun_erlangとか何とか名前をつけて実行権限をつければOK。
使い方はこんな感じ

$ run_erlang "main:main(true)."

このスクリプトでは昨日みたいに呼び出したメソッドの結果を表示してくれないので、自分でio:format〜を書く必要があることに注意。上で書いたように引数を複数取ることができないんだけど、今後修正するかは未定。(だれか正規表現できる人改良してくれ)

追記

後でこのスクリプトは使い勝手が悪いことが分かったので(-sオプションや-Modオプションは引数をまとめて一つのリストにして渡す)結局昨日のスクリプトが一番使いやすいという結論になった。その内気が向けばもう少し改良したものを作るかも。