Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re^3: Bind zone file search

by Kenosis (Priest)
on Sep 26, 2012 at 16:21 UTC ( #995807=note: print w/replies, xml ) Need Help??

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

Hi, ranceh

Am using v5.16, but there's nothing in the code that would prevent its execution by much earlier versions, so I suspect the issue is something else. Try the following change to the subroutine:

use strict; use warnings; my $directory = './zones'; my %zones = getZoneHash($directory); print "$_ -> $zones{$_}\n" for keys %zones; sub getZoneHash { my ($dir) = @_; my %hash; my @files = grep -f, <"$dir/*"> or die "Problem getting filenames in $dir/: $!"; local $/; for my $file (@files) { open my $fh, '<', $file or die $!; my $data = <$fh>; close $fh; $hash{$1} = $2 if $data =~ /zone\s+"([^"]+)".+masters\s+{\s*([^}\s]+)\s*}/s +; } return %hash; }

Now there's a check for file names being read from the desired directory. The script will die with a message if none were read.

If you're still getting the same results, temporarily place the following just below the close $fh; line:

print $data; exit;

You should see a zone stanza that the regex would process. If not, the next step would be to figure out why the file contents are not being read into $data.

Replies are listed 'Best First'.
Re^4: Bind zone file search
by ranceh (Initiate) on Sep 26, 2012 at 16:54 UTC

    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.

      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 "" { // type slave; // file "old/combined/"; // masters { //; // }; //};

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://995807]
and a kettle whistles...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2018-05-20 20:05 GMT
Find Nodes?
    Voting Booth?