<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Yes, you may have other functions than main/1 in escripts. But the escript must be compiled. <div style="font-family:arial,helvetica,sans-serif;display:inline" class="gmail_default">​​</div>Either compiled in run-time <div style="font-family:arial,helvetica,sans-serif;display:inline" class="gmail_default">​(using -mode(compile)</div><div style="font-family:arial,helvetica,sans-serif;display:inline" class="gmail_default">​)​</div> ​or pre-compiled ​(using a beam file or archive).</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>/Håkan</div></div></div></div>
<br><div class="gmail_quote">On Sun, Aug 6, 2017 at 3:44 PM, Karl Velicka <span dir="ltr"><<a href="mailto:karolis.velicka@gmail.com" target="_blank">karolis.velicka@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I've run into this myself once - it seems that you can't have<br>
functions other than main/1 in escripts, although this doesn't appear<br>
to be documented.<br>
<br>
The way around this is to make your scripts compiled, these can have<br>
multiple functions defined in them. You'll need to add this line<br>
somewhere in your .escript file:<br>
<br>
-mode(compile).<br>
<br>
<br>
Cheers,<br>
Karl<br>
<div><div class="h5"><br>
On 6 August 2017 at 12:44, lib nl <<a href="mailto:libnl@outlook.com">libnl@outlook.com</a>> wrote:<br>
> Hi,<br>
><br>
><br>
><br>
> On Linux Mint 18.2 + Erlang/OTP 20.0, there are two escript scripts: a and<br>
> b.<br>
><br>
><br>
><br>
> 1.      a<br>
><br>
> #!/usr/bin/env escript<br>
><br>
> main(_) -><br>
><br>
>        L = lists:map(fun(N) -> 2*N end, lists:seq(1,10)),<br>
><br>
>        io:format("~p~n", [L]).<br>
><br>
><br>
><br>
><br>
><br>
> 2.      b<br>
><br>
> #!/usr/bin/env escript<br>
><br>
> main(_) -><br>
><br>
>        L = lists:map(fun f2/1, lists:seq(1,10)),<br>
><br>
>        io:format("~p~n", [L]).<br>
><br>
><br>
><br>
> f2(N) -> 2 * N.<br>
><br>
><br>
><br>
><br>
><br>
> $ chmod u+x a<br>
><br>
> $ ./a<br>
><br>
> [2,4,6,8,10,12,14,16,18,20]<br>
><br>
><br>
><br>
> $ chmod u+x b<br>
><br>
> $ ./b<br>
><br>
> escript: exception error: undefined function erl_eval:f2/1<br>
><br>
><br>
><br>
><br>
><br>
> So why can’t use fun in escript script? Is this a limitation or known issue?<br>
> Are there any references that can give more info regarding this behavior?<br>
> Thanks!<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> Thanks!<br>
><br>
><br>
><br>
><br>
><br>
><br>
</div></div>> ______________________________<wbr>_________________<br>
> erlang-questions mailing list<br>
> <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
> <a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br>
><br>
______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br>
</blockquote></div><br></div></div>