Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^4: Bind zone file search

by ranceh (Initiate)
on Sep 26, 2012 at 16:54 UTC ( #995823=note: print w/replies, xml ) Need Help??


in reply to Re^3: Bind zone file search
in thread Bind zone file search

I think I found the problem.

I modified your regex slightly in the beginning it starts with "/^zone..."

I found after posing this question last night that a few of the zone files have stanzas commented out.

The ^ in combination with the change to $/ seem to conflict with each other.

I think it would be easier to add a not part to the regex before zone so that what is before zone is not a comment character identifier.

Replies are listed 'Best First'.
Re^5: Bind zone file search
by Kenosis (Priest) on Sep 26, 2012 at 16:58 UTC

    Ah, good! Do you have an example of the commented-out stanzas? I suspect the regex can be modified to manage these exceptions.

      yes, most start with "//" and I have a few with "#"

      //zone "ecpt.org" { // type slave; // file "old/combined/ecpt.org"; // masters { // 204.234.17.196; // }; //};

        Try the following regex:

        /zone\s+"([^"]+)".+masters\s+{[\s#\/]*([a-zA-Z0-9.-]+)[\s#\/;]*}/s

        In addition to accommodating for the # and / characters in the zone stanzas, it handles the ; at the end of the masters' IP/domain name.

        The last character sets:

        [\s#\/]*([a-zA-Z0-9.-]+)[\s#\/;]* ^ ^ ^ | | | | | + - Character set found immediately after I +P/domain name | + - Character set allowed in IP/domain name + - Character set found immediately before IP/domain name

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://995823]
help
Chatterbox?
[Corion]: hippo: If you have a Unicode-wise Perl then likely some zero-width characters in $x would work. Maybe $x = "\x{200b}" works.
[Corion]: Hmm - no, that outputs 1 for me on 5.14 - perl -wle "my $x = qq(\x{200b}); warn $x; warn length $x"
[hippo]: Smart - I'll give that a go. Thanks.
[hippo]: Ah
[Corion]: But maybe there is some other Unicode string that will be true but have a zero width
[hippo]: For explanation, I've seen this construct in someone else's code (no names, no pack drill) and couldn't think of a situation to trigger it.
[Corion]: You'll have to look somewhere esoteric for that. Maybe some tied variable or special dualvar can also trigger that. But it's certainly not a common occurrence
[Corion]: And on 5.20, the following also outputs no find:perl -wle 'for my $x ("\x{2000}".."\ x{1fffff}") { if( $x && ! length $x ) { warn qq(<$x>); warn length $x; die } }'
[Corion]: (this time on Unix)
[hippo]: Understood. I'll have to go through the code and see if it's doing anything fancy with ties, dual-vars or non-scalars. In the end, it's probably a bug though.

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (11)
As of 2017-07-27 13:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I came, I saw, I ...
























    Results (413 votes). Check out past polls.