Erlang入門 その2

erlangプログラムをコマンドラインから動かす

Erlang入門のサンプルに以下を追加して、標準出力に出るようにしてみる。
Erlangでは、コマンドラインからの引数は文字列のリストではなくアトムのリストであることに注意。
今回は"1423"といったように引数を1つしか引数を取らないのでmain([Arg])とArgを[]で囲ってある。その後、取れたアトムを数値リストに変換している。

erlc team.erlでコンパイルされ、
erl -noshell -s team main 12345 -s init stop
で動くようになる。

  • sの後の最初のトークンがモジュール名で、その後に関数名、引数と続く。

最後の-s init stopはerlシェルを終了させるためのものである。

team.erlの続き
print_divided([]) -> [];
print_divided(L) ->
    [{_,A,B}|T]=L,
    print_team(A),
    io:format(" vs "),
    print_team(B),
    io:format(" (~w vs ~w)~n",[sum_level(A),sum_level(B)]),
    print_divided(T).


print_team([]) -> [];
print_team(L) ->
    [{N,_}|T]=L,
    io:format("~w",[N]),
    print_team(T).

main([Arg]) ->
    print_divided(divide(
                    lists:map(fun(X) -> erlang:list_to_integer([X]) end, 
					erlang:atom_to_list(Arg)) )).

実行結果

$ erl -noshell -s team main 14233 -s init stop
23 vs 145 (6 vs 7)
123 vs 45 (7 vs 6)
24 vs 135 (7 vs 6)
134 vs 25 (6 vs 7)
12 vs 345 (5 vs 8)