Memulai erl
Jika Erlang telah terinstall, erl bisa kita eksekusi dari sembarang path berikut ini:
[bpdp@bpdp-arch erlang]$ erl Erlang R13B04 (erts-5.7.5) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false] Eshell V5.7.5 (abort with ^G) 1>
Tanda 1> adalah tanda prompt dari erl. Pada posisi tersebut, kita bisa mengetikkan perintah-perintah Erlang ataupun menggunakan key binding yang sudah disediakan. Angka 1 menunjukkan nomor proses.
Keluar dari erl
Untuk keluar dari erl, tekan [Ctrl-G] kemudian ketikkan q diikuti tombol Enter
1> User switch command --> q [bpdp@bpdp-arch erlang]$
Bisa juga dengan menggunakan perintah "q()." berikut ini:
10> q(). ok 11> [bpdp@bpdp-arch erlang]$
Menuliskan Perintah
Perintah yang kita tuliskan tidak akan dieksekusi jika belum ada tanda titik (.). Tanda titik di Erlang memang digunakan sebagai tanda untuk mengakhiri perintah.
3> io:format("Selamat datang\n")
3>
3>
3>
3>
3> .
Selamat datang
ok
4>
Tombol-tombol yang Bisa Digunakan di erl (key-binding)
Ada beberapa tombol yang bisa digunakan setelah kita masuk ke prompt erl, yaitu:
- Panah atas (Ctrl-P) dan panah bawah (Ctrl-N), digunakan untuk menampilkan perintah-perintah sebelumnya dan sesudahnya.
- Panah kiri (Ctrl-B) dan panah kanan (Ctrl-F), digunakan untuk menggerakkan kursor satu karakter ke kiri atau ke kanan.
- Ctrl-A, digunakan untuk menggerakkan kursor ke awal baris.
- Ctrl-E, digunakan untuk menggerakkan kursor ke akhir baris.
- Ctrl-D, digunakan untuk menghapus karakter pada posisi kursor.
Pertolongan di erl
Untuk mengakses fasilitas pertolongan di erl, kita bisa menggunakan function help() berikut ini:
4> help(). ** shell internal commands ** b() -- display all variable bindings e(N) -- repeat the expression in query n f() -- forget all variable bindings f(X) -- forget the binding of variable X h() -- history history(N) -- set how many previous commands to keep results(N) -- set how many previous command results to keep catch_exception(B) -- how exceptions are handled v(N) -- use the value of query n rd(R,D) -- define a record rf() -- remove all record information rf(R) -- remove record information about R rl() -- display all record information rl(R) -- display record information about R rp(Term) -- display Term using the shell's record information rr(File) -- read record information from File (wildcards allowed) rr(F,R) -- read selected record information from file(s) rr(F,R,O) -- read selected record information with options ** commands in module c ** bt(Pid) -- stack backtrace for a process c(File) -- compile and load code in file cd(Dir) -- change working directory flush() -- flush any messages sent to the shell help() -- help info i() -- information about the system ni() -- information about the networked system i(X,Y,Z) -- information about pid X,Y,Z l(Module) -- load or reload module lc([File]) -- compile a list of Erlang modules ls() -- list files in the current directory ls(Dir) -- list files in directory Dir m() -- which modules are loaded m(Mod) -- information about module mod memory() -- memory allocation information memory(T) -- memory allocation information of type t nc(File) -- compile and load code in file on all nodes nl(Module) -- load module on all nodes pid(X,Y,Z) -- convert X,Y,Z to a Pid pwd() -- print working directory q() -- quit - shorthand for init:stop() regs() -- information about registered processes nregs() -- information about all registered processes xm(M) -- cross reference check a module y(File) -- generate a Yecc parser ** commands in module i (interpreter interface) ** ih() -- print help for the i module true 5>
Perintah-perintah di erl
Ada banyak perintah-perintah di erl yang bisa kita gunakan dan secara sepintas bisa kita lihat pada pembahasan tentang help(). Beberapa diantaranya akan kita bahas di bawah ini.
b() - digunakan untuk menampilkan variabel-variabel Erlang yang telah kita definisikan:
23> Versi = '4.8'. '4.8' 24> b(). Versi = '4.8' ok 25>
f() - digunakan untuk menghapus semua definisi variabel:
25> f(). ok 26> b(). ok 27>
f(X) - digunakan untuk menghapus definisi variabel X:
29> Versi = '4.8'. '4.8' 30> b(). Versi = '4.8' ok 31> f(Versi). ok 32> b(). ok 33>
h() - digunakan untuk menampilkan history perintah yang kita ketikkan (dan hasilnya).
history(N) - digunakan untuk menetapkan jumlah penyimpanan history sebanyak N perintah.
results(N) - digunakan untuk menetapkan jumlah penyimpanan hasil sebanyak N hasil perintah.
c(File) - digunakan untuk mengkompilasi file .erl menjadi ,beam sekaligus me-load modul yang ada pada file tersebut di sesi erl yang aktif. Ada beberapa cara yang bisa dilakukan:
1> c('tut1.erl').
{ok,tut1}
2> c(tut1).
{ok,tut1}
3> c(tut1.erl).
{ok,tut1}
4>
i() - digunakan untuk menampilkan informasi tentang sistem Erlang yang tersedia.
ni() - digunakan untuk menampilkan informasi tentang sistem network Erlang yang tersedia.
pwd() - menampikan direktori aktif saat ini.
l(Module) - digunakan untuk me-load modul
ls() - digunakan untuk menampilkan daftar file dan direktori di direktori aktif saat ini.
ls(Dir) - digunakan untuk menampilkan daftar file dan direktori di direktori Dir.
m() - digunakan untuk menampilkan daftar modul yang di-load:
2> m(). Module File application /usr/lib/erlang/lib/kernel-2.13.5/ebin/application.beam application_controll /usr/lib/erlang/lib/kernel-2.13.5/ebin/application_controller.beam application_master /usr/lib/erlang/lib/kernel-2.13.5/ebin/application_master.beam beam_lib /usr/lib/erlang/lib/stdlib-1.16.5/ebin/beam_lib.beam c /usr/lib/erlang/lib/stdlib-1.16.5/ebin/c.beam code /usr/lib/erlang/lib/kernel-2.13.5/ebin/code.beam code_server /usr/lib/erlang/lib/kernel-2.13.5/ebin/code_server.beam dict /usr/lib/erlang/lib/stdlib-1.16.5/ebin/dict.beam edlin /usr/lib/erlang/lib/stdlib-1.16.5/ebin/edlin.beam erl_distribution /usr/lib/erlang/lib/kernel-2.13.5/ebin/erl_distribution.beam erl_eval /usr/lib/erlang/lib/stdlib-1.16.5/ebin/erl_eval.beam erl_internal /usr/lib/erlang/lib/stdlib-1.16.5/ebin/erl_internal.beam erl_lint /usr/lib/erlang/lib/stdlib-1.16.5/ebin/erl_lint.beam erl_parse /usr/lib/erlang/lib/stdlib-1.16.5/ebin/erl_parse.beam erl_prim_loader preloaded erl_scan /usr/lib/erlang/lib/stdlib-1.16.5/ebin/erl_scan.beam erlang preloaded error_handler /usr/lib/erlang/lib/kernel-2.13.5/ebin/error_handler.beam error_logger /usr/lib/erlang/lib/kernel-2.13.5/ebin/error_logger.beam error_logger_tty_h /usr/lib/erlang/lib/stdlib-1.16.5/ebin/error_logger_tty_h.beam ets /usr/lib/erlang/lib/stdlib-1.16.5/ebin/ets.beam file /usr/lib/erlang/lib/kernel-2.13.5/ebin/file.beam file_io_server /usr/lib/erlang/lib/kernel-2.13.5/ebin/file_io_server.beam file_server /usr/lib/erlang/lib/kernel-2.13.5/ebin/file_server.beam filename /usr/lib/erlang/lib/stdlib-1.16.5/ebin/filename.beam gb_sets /usr/lib/erlang/lib/stdlib-1.16.5/ebin/gb_sets.beam gb_trees /usr/lib/erlang/lib/stdlib-1.16.5/ebin/gb_trees.beam gen /usr/lib/erlang/lib/stdlib-1.16.5/ebin/gen.beam gen_event /usr/lib/erlang/lib/stdlib-1.16.5/ebin/gen_event.beam gen_server /usr/lib/erlang/lib/stdlib-1.16.5/ebin/gen_server.beam global /usr/lib/erlang/lib/kernel-2.13.5/ebin/global.beam global_group /usr/lib/erlang/lib/kernel-2.13.5/ebin/global_group.beam group /usr/lib/erlang/lib/kernel-2.13.5/ebin/group.beam heart /usr/lib/erlang/lib/kernel-2.13.5/ebin/heart.beam hipe_unified_loader /usr/lib/erlang/lib/kernel-2.13.5/ebin/hipe_unified_loader.beam inet /usr/lib/erlang/lib/kernel-2.13.5/ebin/inet.beam inet_config /usr/lib/erlang/lib/kernel-2.13.5/ebin/inet_config.beam inet_db /usr/lib/erlang/lib/kernel-2.13.5/ebin/inet_db.beam inet_gethost_native /usr/lib/erlang/lib/kernel-2.13.5/ebin/inet_gethost_native.beam inet_parse /usr/lib/erlang/lib/kernel-2.13.5/ebin/inet_parse.beam inet_udp /usr/lib/erlang/lib/kernel-2.13.5/ebin/inet_udp.beam init preloaded io /usr/lib/erlang/lib/stdlib-1.16.5/ebin/io.beam io_lib /usr/lib/erlang/lib/stdlib-1.16.5/ebin/io_lib.beam io_lib_format /usr/lib/erlang/lib/stdlib-1.16.5/ebin/io_lib_format.beam io_lib_pretty /usr/lib/erlang/lib/stdlib-1.16.5/ebin/io_lib_pretty.beam kernel /usr/lib/erlang/lib/kernel-2.13.5/ebin/kernel.beam kernel_config /usr/lib/erlang/lib/kernel-2.13.5/ebin/kernel_config.beam lists /usr/lib/erlang/lib/stdlib-1.16.5/ebin/lists.beam net_kernel /usr/lib/erlang/lib/kernel-2.13.5/ebin/net_kernel.beam orddict /usr/lib/erlang/lib/stdlib-1.16.5/ebin/orddict.beam ordsets /usr/lib/erlang/lib/stdlib-1.16.5/ebin/ordsets.beam os /usr/lib/erlang/lib/kernel-2.13.5/ebin/os.beam otp_ring0 preloaded packages /usr/lib/erlang/lib/kernel-2.13.5/ebin/packages.beam prim_file preloaded prim_inet preloaded prim_zip preloaded proc_lib /usr/lib/erlang/lib/stdlib-1.16.5/ebin/proc_lib.beam proplists /usr/lib/erlang/lib/stdlib-1.16.5/ebin/proplists.beam ram_file /usr/lib/erlang/lib/kernel-2.13.5/ebin/ram_file.beam rpc /usr/lib/erlang/lib/kernel-2.13.5/ebin/rpc.beam sets /usr/lib/erlang/lib/stdlib-1.16.5/ebin/sets.beam shell /usr/lib/erlang/lib/stdlib-1.16.5/ebin/shell.beam shell_default /usr/lib/erlang/lib/stdlib-1.16.5/ebin/shell_default.beam standard_error /usr/lib/erlang/lib/kernel-2.13.5/ebin/standard_error.beam supervisor /usr/lib/erlang/lib/stdlib-1.16.5/ebin/supervisor.beam supervisor_bridge /usr/lib/erlang/lib/stdlib-1.16.5/ebin/supervisor_bridge.beam sys /usr/lib/erlang/lib/stdlib-1.16.5/ebin/sys.beam unicode /usr/lib/erlang/lib/stdlib-1.16.5/ebin/unicode.beam user_drv /usr/lib/erlang/lib/kernel-2.13.5/ebin/user_drv.beam user_sup /usr/lib/erlang/lib/kernel-2.13.5/ebin/user_sup.beam zlib preloaded ok 3>
m(Module) - digunakan untuk menampilkan informasi tentang modul Module:
4> m(application).
Module application compiled: Date: February 22 2010, Time: 19.36
Compiler options: [{cwd,"/net/isildur/ldisk/daily_build/otp_prebuild_r13b04.2010-02-22_20/otp_src_R13B04/lib/kernel/src"},
{outdir,"/net/isildur/ldisk/daily_build/otp_prebuild_r13b04.2010-02-22_20/otp_src_R13B04/lib/kernel/src/../ebin"},
{i,"/net/isildur/ldisk/daily_build/otp_prebuild_r13b04.2010-02-22_20/otp_src_R13B04/lib/kernel/src/../include"},
debug_info]
Object file: /usr/lib/erlang/lib/kernel-2.13.5/ebin/application.beam
Exports:
behaviour_info/1 module_info/1
get_all_env/0 permit/2
get_all_env/1 set_env/3
get_all_key/0 set_env/4
get_all_key/1 start/1
get_application/0 start/2
get_application/1 start_boot/1
get_env/1 start_boot/2
get_env/2 start_type/0
get_key/1 stop/1
get_key/2 takeover/2
info/0 unload/1
load/2 unset_env/2
load/1 unset_env/3
loaded_applications/0 which_applications/0
module_info/0 which_applications/1
ok
5>
ih() - digunakan untuk menampilkan informasi tentang modul i:
5> ih().
iv() -- print the current version of the interpreter
im() -- pop up a monitor window
ii(Mod) -- interpret Mod(s) (or AbsMod(s))
ii(Mod,Op) -- interpret Mod(s) (or AbsMod(s))
use Op as options (same as for compile)
iq(Mod) -- do not interpret Mod(s)
ini(Mod) -- ii/1 at all Erlang nodes
ini(Mod,Op) -- ii/2 at all Erlang nodes
inq(Mod) -- iq at all Erlang nodes
ib(Mod,Line) -- set a break point at Line in Mod
ib(M,F,Arity)-- set a break point in M:F/Arity
ibd(Mod,Line)-- disable the break point at Line in Mod
ibe(Mod,Line)-- enable the break point at Line in Mod
iba(M,L,Action)-- set a new action at break
ibc(M,L,Action)-- set a new condition for break
ir(Mod,Line) -- remove the break point at Line in Mod
ir(M,F,Arity)-- remove the break point in M:F/Arity
ir(Mod) -- remove all break points in Mod
ir() -- remove all existing break points
il() -- list all interpreted modules
ip() -- print status of all interpreted processes
ic() -- remove all terminated interpreted processes
ipb() -- list all break points
ipb(Mod) -- list all break points in Mod
ia(Pid) -- attach to Pid
ia(X,Y,Z) -- attach to pid(X,Y,Z)
ia(Pid,Fun) -- use own Fun = {M,F} as attach application
ia(X,Y,Z,Fun)-- use own Fun = {M,F} as attach application
iaa([Flag]) -- set automatic attach to process
Flag is init,break and exit
iaa([Fl],Fun)-- use own Fun = {M,F} as attach application
ist(Flag) -- set stack trace flag
Flag is all (true),no_tail or false
ok
6>
Beberapa perintah lainnya (misalnya yang terkait dengan record) sebaiknya dipelajari saat mempelajari modul yang terkait.
Menggunakan erl Untuk Membaca Dokumentasi
Untuk membaca dokumentasi, kita bisa menggunakan argumen -man pada saat memanggil erl sebagai berikut:
[bpdp@bpdp-arch erlang]$ erl -man erl
erl(1) User Commands erl(1)
NAME
erl - The Erlang Emulator
DESCRIPTION
The erl program starts an Erlang runtime system. The exact details (for example, whether erl is a
script or a program and which other programs it calls) are system-dependent.
Windows users probably wants to use the werl program instead, which runs in its own window with
scrollbars and supports command-line editing. The erl program on Windows provides no line editing in
its shell, and on Windows 95 there is no way to scroll back to text which has scrolled off the
screen. The erl program must be used, however, in pipelines or if you want to redirect standard input
or output.
EXPORTS
erl arguments
Starts an Erlang runtime system.
The arguments can be divided into emulator flags , flags and plain arguments :
...
...
Pada bagian bawah, biasanya terdapat SEE ALSO yang berisi beberapa manpage yang juga bisa anda panggil dengan cara seperti di atas:
...
...
ERL_EPMD_PORT :
This environment variable can contain the port number to use when communicating with epmd . The
default port will work fine in most cases. A different port can be specified to allow nodes of
independent clusters to co-exist on the same host. All nodes in a cluster must use the same epmd
port number.
SEE ALSO
init(3) , erl_prim_loader(3) , erl_boot_server(3) , code(3) , application(3) , heart(3) , net_ker‐
nel(3) , auth(3) , make(3) , epmd(1) , erts_alloc(3)
Ericsson AB erts 5.7.5 erl(1)
Catatan: fasilitas ini hanya tersedia di OS berbasis UNIX (Linux, BSD, dan lain-lain). Windows tidak menyediakan fasilitas ini karena memang keterbatasan dari Windows yang tidak menyediakan sistem manpage.
0 comments:
Post a Comment