[erlang-questions] How to match on a nested record against a dict

Igor Ribeiro Sucupira igorrs@REDACTED
Sun Nov 22 08:17:57 CET 2009


Hi, Jarrod.

I can't understand exactly what you want, so I'll give you an example.

Suppose DomainsSet is a sets of domains and DnsRec is a dns_rec. This
would be a list of the domains that are present in some resource
record and in DomainsSet:
[Domain || #dns_rr{domain = Domain} <- DnsRec#dns_rec.anlist,
sets:is_element(Domain, DomainsSet)]

Is that helpful?

Igor.

On Sun, Nov 22, 2009 at 3:52 AM, Jarrod Roberson <jarrod@REDACTED> wrote:
> I have the following data structure: it is a record as specified in
> inet_dns.hrl:
>
> {ok,{dns_rec,{dns_header,0,true,'query',true,false,false,false,false,0},
>                   [],
>                   [{dns_rr,"_see._tcp.local",ptr,in,0,0,
>                            "jhr@REDACTED",undefined,[],
>                            false}],
>                   [],[]}}
>
> I have the following code where Sub is a dict:
>
> receiver(Sub) ->
>    receive
>        {udp, _Socket, IP, InPortNo, Packet} ->
>            DnsRec = inet_dns:decode(Packet),
>               io:format("~n~nFrom: ~p~nPort: ~p~nData:
> ~p~n",[IP,InPortNo,DnsRec]),
>               receiver(Sub);
>           stop ->
>               true;
>         AnythingElse ->
>               %io:format("RECEIVED: ~p~n",[AnythingElse]),
>               receiver(Sub)
>       end.
>
> I want to match on the "_see._tcp.local" and see if it is in the dns_rr
> record and only do the io:format() if that is in my subscriptions dict.
> Can anyone point me in the right direction of what idiom to use? This
> pattern matching stuff is difficult for us olde school if () ers


-- 
"The secret of joy in work is contained in one word - excellence. To
know how to do something well is to enjoy it." - Pearl S. Buck.


More information about the erlang-questions mailing list