---
name: "BIND::Config::Parser"
section: "3pm"
platform: "linux"
package: "libbind-config-parser-perl"
version: "0.01-1.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/BIND::Config::Parser"
---

# BIND::Config::Parser(3pm)

Parse BIND Config file.

## NAME

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

## 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" );
```

## 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.

## CONSTRUCTOR

- new( );

  Create a new `"BIND::Config::Parser"` object.

## 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.

## TODO

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

## COPYRIGHT AND LICENSE

Copyright (c) 2005 Matt Dainty.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

## AUTHORS

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

## SEE ALSO

perl, Parse::RecDescent, BIND::Conf\_Parser.
