[erlang-questions] Introspecting the atom table

Michael McDaniel <>
Wed Dec 20 23:25:10 CET 2006


On Wed, Dec 20, 2006 at 11:07:48PM +0100, Kostis Sagonas wrote:
> Eric Merritt wrote:
> > Guys,
> > 
> >  Is there anyway to introspect the atom table? I would like to be able
> > to take a string and check if that string has been interned in the
> > atom table. Even better would be a bif that converts the string to an
> > atom if that atom already exists and doesn't otherwise. I suspect that
> > this type of functionality doesn't exist, but I thought I would ask
> > and make sure.
> 
> Handle with care:
> 
> 
> Eshell V5.5.2.1  (abort with ^G)
> 1> list_to_existing_atom("erlang").
> erlang
> 2> list_to_existing_atom("gazonk").
> 
> =ERROR REPORT==== 20-Dec-2006::23:06:58 ===
> Error in process <0.29.0> with exit value: 
> {badarg,[{erlang,list_to_existing_atom,["gazonk"]},{erl_eval,do_apply,5},{shell,exprs,6},{shell,eval_loop,3}]}
> 
> ** exited: {badarg,[{erlang,list_to_existing_atom,["gazonk"]},
>                      {erl_eval,do_apply,5},
>                      {shell,exprs,6},
>                      {shell,eval_loop,3}]} **
> 
> Kostis
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  and here is how I might use it where RegName could be a
  new server or an existing one already known.  RegName, 
  for example, may be passed in to a fun which executes the
  following ...


  net_adm:ping(

    try list_to_existing_atom(RegName)
    catch Class:Error ->
        list_to_atom(RegName)
    end

  )


~M 



More information about the erlang-questions mailing list