logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

BIND::Config::Parser - Parse BIND Config file.

Authors

       Matt Dainty <matt@bodgit-n-scarper.com>.

Constructor

       new( );
           Create a new "BIND::Config::Parser" object.

Description

       BIND::Config::Parser provides a lightweight parser to the configuration file syntax of BIND v8 and v9
       using a "Parse::RecDescent" grammar.

       It is in a similar vein to "BIND::Conf_Parser". However, as it has no knowledge of the directives, it
       doesn't need to be kept updated as new directives are added, it simply knows how to carve up a BIND
       configuration file into logical chunks.

Methods

       set_open_block_handler( CODE_REF );
           Set the code to be called when a configuration block is opened. At least one argument will be passed;
           the  name  of that block, for example "options" or "zone", etc. as well as any additional items up to
           but not including the opening curly brace.

       set_close_block_handler( CODE_REF );
           Set the code to be called when a configuration block is closed. No arguments are passed.

       set_statement_handler( CODE_REF );
           Set the code to be called on a single line configuration element.  At  least  one  argument  will  be
           passed;  the name of that element, as well as any additional items up to but not including the ending
           semi-colon.

       parse_file( FILENAME );
           Parse FILENAME, triggering the above defined handlers on the relevant sections.

Name

       BIND::Config::Parser - Parse BIND Config file.

See Also

       perl, Parse::RecDescent, BIND::Conf_Parser.

perl v5.40.1                                       2025-08-07                          BIND::Config::Parser(3pm)

Synopsis

        use BIND::Config::Parser;

        # Create the parser
        my $parser = new BIND::Config::Parser;

        my $indent = 0;

        # Set up callback handlers
        $parser->set_open_block_handler( sub {
                print "\t" x $indent, join( " ", @_ ), " {\n";
                $indent++;
        } );
        $parser->set_close_block_handler( sub {
                $indent--;
                print "\t" x $indent, "};\n";
        } );
        $parser->set_statement_handler( sub {
                print "\t" x $indent, join( " ", @_ ), ";\n";
        } );

        # Parse the file
        $parser->parse_file( "named.conf" );

Todo

       Probably the odd one or two things. I'm fairly sure the grammar is correct.

See Also