2010-11-27 3 views
6

私はErlangのは、コマンドラインまたはbashスクリプトを経由してファイルを起動することができます。:コマンドラインファイルErlの中で機能を起動するために

exec erl file.erl 

しかし、私は、関数を直接起動する方法を見つけるように見えることはできませんこのファイル内に

あなたはおそらく何をしたい

exec erl file.erl -f function() 

感謝任意の提案...

答えて

13

はあなたの例ではありましたようにあなたは、ERLコマンドでErlangのファイルを指定することはありませんerl -s module_name function_name

注意です。 Erlang VMは、コードパス内のすべてのモジュールをロードします。それにはローカルディレクトリが含まれます。 http://www.erlang.org/doc/man/erl.htmlから

-runモッド[FUNC [ARG1、ARG2、...]] (INITフラグ)initが指定 関数を呼び出しします。 Funcのデフォルトはstartです。 引数が指定されていない場合は、 関数は0であるとみなされます。 それ以外の場合は、 1となり、リスト[Arg1、Arg2、...]は 引数とみなされます。すべての引数は 文字列として渡されます。 init(3)を参照してください。

-sモッド[FUNC [ARG1、ARG2、...]] (INITフラグ)initが指定 関数を呼び出しします。 Funcのデフォルトはstartです。 引数が指定されていない場合は、 関数は0であるとみなされます。 それ以外の場合は、 1となり、リスト[Arg1、Arg2、...]は 引数とみなされます。すべての引数は アトムとして渡されます。 init(3)を参照してください。

+0

ありがとうJon!いつも通り、あなたは通り抜けます:) –

+3

また。コマンドラインツールでエスケープをチェックアウトしている場合。それは戦争の胸に持っているかなり良いツールです。 http://www.erlang.org/doc/man/escript.html –

+2

文字列やアトムのリスト以外の引数でその関数を開始する必要がある場合に備えて、 '-eval'もあります。ああ、対話シェルが開かないようにするために '-noshell'を追加し、関数が終了したときにErlangを実際に終了するために' -s init stop'を最後に追加することもできます。 – ndim

関連する問題