in reply to Re^3: How to create a DNS message in perl?
in thread How to create a DNS message in perl?


Hi
Thanks for the reply.Acording to your suggestion i have written the code as follows.
my $QNAME= "www.google.com"; my ($QNAME1, $QNAME2,$QNAME3)= split(/\./,$QNAME); my ($len1,$len2, $len3)=(length($QNAME1),length($QNAME2),length($QNAME +3));

Then how to use the pack(('C',0)or "\x00") for in this case.So that it deocded the value as '0377777706676F6F676C6503636F6D00'.

Plz suggest.

Regd's
Sanjay

Replies are listed 'Best First'.
Re^5: How to create a DNS message in perl?
by ikegami (Patriarch) on Jul 30, 2008 at 20:11 UTC

    That won't work for www.some.domain.com. Use a loop.

    my $QNAME= "www.google.com"; my $QNAME_packed = ''; for my $part ( split( /\./, $QNAME ) ) { $QNAME_packed .= pack( 'C', length($part) ) . $part; } $QNAME_packed .= pack('C', 0)

    Or

    my $QNAME= "www.google.com"; my $QNAME_packed = ''; for my $part ( split( /\./, $QNAME ) ) { $QNAME_packed .= pack( 'C/a*', $part ); } $QNAME_packed .= pack('C', 0)

    Or

    my $QNAME= "www.google.com"; my $QNAME_packed = ''; for my $part ( split( /\./, $QNAME ), '' ) { $QNAME_packed .= pack( 'C/a*', $part ); }

    Or if requiring Perl 5.8 is acceptable

    my $QNAME= "www.google.com"; my $QNAME_packed = pack( '(C/a*)*', split( /\./, $QNAME ), '' ) );

      Hi

      Thanks a lot for your help. Now my problem was solved.

      Regd's
      Sanjay