in reply to Re^2: Net::DNS::RR patch
in thread Net::DNS::RR patch

However, your regex doesn't work

You're right here. I deleted a " by accident. Here's the fix:

$rrstring =~ s/^((?:[^\n";]+|"(?:[^\n"\\]|\\[^\n])*")*);[^\n]*$/$1/mg; ^ was missing
I also disagree with you assertion that the patch won't allow backslashed quotes within TXT RDATA.

It completely ignores backslashes, so I knew there was a problem. I was only wrong in how it fails. Your patch does allow backslashes, but it incorrectly finds the end of the quoted string.

Here's a string where it fails to work:

# Here's the simplest case where it fails: # $expect = "\"Joe\""; # $rdata = $expect . " ; \"comment\""; $expect = "\"John \\\"The Wiz\\\" Doe; programmer\""; $rdata = $expect . " ; \"comment\""; print("Input: ", $rdata, $/); print("Expect: ", $expect, $/); if(($rdata)=~m[;]) { if(($rdata)=~m[^(".*")($|\s*;)]) { $rdata = $1; } else { ($rdata)=~s/;.*//g; } } print("Get: ", $rdata, $/); __END__ output ====== Input: "John \"The Wiz\" Doe; programmer" ; "comment" Expect: "John \"The Wiz\" Doe; programmer" Get: "John \"The Wiz\" Doe; programmer" ; "comment"

btw, the /g in ($rdata)=~s/;.*//g; is not necessary.