[erlang-questions] binary:compile_pattern - I'm very confused!

Lukas Larsson <>
Fri Feb 8 23:36:02 CET 2013


There is dark magic at work. What you got there is what is referred to as a
"magic" binary. It represents some internal state within the erlang
emulator and is used by binary:compile_pattern and nifs. You will have to
store it someplace else (like you state) and fetch it from there when you
are doing the split.


On Fri, Feb 8, 2013 at 11:09 PM, Steve Strong <> wrote:

>  Hi,
>
> I've got a binary split that I'm doing fairly regularly, so I wanted to
> use a compiled pattern to make it more efficient.  I don't have any state
> floating around (it's very much a utility function), so my plan was to
> compile the pattern in an erl shell and just paste the resultant term
> directly into my source code (with an appropriate comment!).  However,
> things are not as they seem:
>
> Erlang R15B02 (erts-5.9.2) [source] [smp:8:8] [async-threads:0] [hipe]
> [kernel-poll:false]
>
> Eshell V5.9.2  (abort with ^G)
> 1> C = binary:compile_pattern(<<0,0,1,0>>).
> {bm,<<>>}
> 2> X = <<2,3,4,0,0,1,0,5,6,7>>.
> <<2,3,4,0,0,1,0,5,6,7>>
> 3> binary:split(X, C).
> [<<2,3,4>>,<<5,6,7>>]
> 4> binary:split(X, {bm,<<>>}).
> ** exception error: bad argument
>      in function  binary:split/3 (binary.erl, line 84)
> 5> D = binary_to_term(term_to_binary(C)).
> {bm,<<>>}
> 6> C = D.
> {bm,<<>>}
> 7> D =:= C.
> true
> 8> binary:split(X, D).
> ** exception error: bad argument
>      in function  binary:split/3 (binary.erl, line 84)
> 9>
>
> The above should be fairly self-explanatory - I'm very confused and either
> being particularly dim tonight, or there is some dark magic at work :)  Can
> anyone shed any light?
>
> Cheers,
>
> Steve
>
> --
> Steve Strong
> Sent with Sparrow <http://www.sparrowmailapp.com/?sig>
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130208/a888d071/attachment.html>


More information about the erlang-questions mailing list