<div dir="ltr">How is this other system maintaining the deeply-nested Erlang structure? How or why is it in text? How does it get rendered without newlines and indentation? Why not use a more predictable (less flexible) serialization format (erlang term format, JSON, protocol buffers, …)?<div>
<br></div><div>I do not think that this is the best approach. There are many possible representations of various tokens as Erlang source code and I would never trust two implementations to render it exactly the same way unless I wrote both of them. Some tokens that are going to be particularly problematic are lists of integers (which may or may not be rendered like strings, with various ways to escape), binaries (which may be rendered like strings or not), and floating point numbers.</div>
<div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Feb 7, 2014 at 10:17 AM, Brandon Clark <span dir="ltr"><<a href="mailto:a.brandon.clark@gmail.com" target="_blank">a.brandon.clark@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I have 2 production systems, one Erlang and one not, both maintaining copies of a large, deeply-nested Erlang data structure.  I need to set up a monitoring script to confirm that both systems are holding identical copies of the data structure.<div>

<br></div><div>The non-Erlang system is holding an ASCII rendering of the data structure.  Computing an MD5 sum of this string is easy.  If I can get the Erlang system to convert its data structure to a string, I can have it compute an MD5 sum as well and the monitoring is simply a matter of comparing hashes.</div>

<div><br></div><div>I'm stuck on the process of converting the Erlang term to a string.</div><div><br></div><div><font face="courier new, monospace">Str = io_lib:format("~p", [Data])</font></div><div><font face="courier new, monospace"><br>

</font></div><div><font face="arial, helvetica, sans-serif">gives me what I want, except that it includes newlines and indentation that I can't expect the non-Erlang system to have.</font></div><div><font face="arial, helvetica, sans-serif"><br>

</font></div><div><font face="courier new, monospace">Str = io_lib:format("~w", [Data])</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">eliminates the newlines and indentation but renders the textual components of Data as lists of integers, guaranteeing the result won't match the non-Erlang system.</font></div>

<div><br></div><div>So the question is, how do I get a "~p"-style rendering of an arbitrarily-large Erlang term <i>without</i> newlines and indentation?</div><div><br></div><div>Thank you!</div><span class="HOEnZb"><font color="#888888"><div>
<br></div><div>
~Brandon Clark</div><div><br></div></font></span></div>
<br>_______________________________________________<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" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>