|
NAMEConfig::Record - Configuration file accessSYNOPSISuse Config::Record; # Create an empty record & then load from file my $config = Config::Record->new(); $config->load("/etc/myapp.cfg"); # Create & load, then save to filename my $config = Config::Record->new(file => "/etc/myapp.cfg"); $config->save("/etc/myapp.cfg"); # Load / save from filehandle my $fh = IO::File->new("/etc/myapp.cfg"); my $config = Config::Record->new(file => $fh); $config->save($fh); # Get a config value, throw error if not found my $value = $config->get("foo"); # Get a config value, return 'eek' if not found my $value = $config->get("foo", "eek"); # Set a value $config->set("foobar", "wizz"); # Get a deep config value (ie nested hash) my $value = $config->get("foo/bar", "eek"); # Get first element of an array param my $value = $config->get("people/[0]/forename"); # Get the raw hash reference forming the record my $record = $config->record(); # Get a new config object rooted at a sub-hash my $config = $config->view("foo"); DESCRIPTIONThis module provides an API for loading and saving of simple configuration file records. Entries in the configuration file are essentially key,value pairs, with the key and values separated by a single equals symbol. The "key" consists only of alphanumeric characters. There are three types of values, scalar values can contain anything except newlines. Trailing whitespace will be trimmed unless the value is surrounded in double quotes. egfoo = Wizz foo = "Wizz.... " Long lines can be split with a backslash character, without introducing newlines. Without double quotes, whitespace at beginning and end of lines will be trimmed eg foo = This is a long \ line of text foo = "This is a long " \ "line of text" Multi-line strings can be provided as 'HERE' documents, eg foo = <<EOF This is a multiple paragraph block of text with newlines preserved EOF Array values consist of a single right round bracket, following by one "value" per line, terminated by a single left round bracket. eg foo = ( Wizz "Wizz... " ) Hash values consist of a single right curly bracket, followed by one key,value pair per line, terminated by a single left curly bracket. eg foo = { one = Wizz two = "Wizz.... " } Arrays and hashes can be nested to arbitrary depth. EXAMPLEname = Foo title = "Wizz bang wallop" eek = ( OOhh Aahhh Wizz ) people = ( { forename = John surnamne = Doe } { forename = Some surname = One } ) wizz = { foo = "Elk" ooh = "fds" } EXTRA PARSER FEATURESThe syntax described thus far is classed as the base feature set. By passing the "features" parameter when creating an instance of the "Config::Record" class, it is posible to turn on certain extra featuresQUOTED NON-ALPHANUMERIC KEYSThe keys for configuration parameters are normally restricted to only contain the characters 'a-Z', '0-9', '_', '-' and '.'. Sometimes it is desirable to allow arbitrary characters for keys. If this capability is required then the "quotedkeys" parameter can be set.EXAMPLE name = Foo title = "Wizz bang wallop" " some parameter " = ( foo bar } "an embeded \" quote" = bar "an embeded \\ backslash" = wizz EXTERNAL INCLUDE FILESWith large configuration files it can be desirable to split them into a number of smaller files. If this capability is required, then the "includes" feature can be requested. Each included file must follow the syntax rules already described.EXAMPLE In the main file name = Foo title = "Wizz bang wallop" foo = @include(somefile.cfg) And in somefile.cfg firstname = Joe lastname = Blogs Is equivalent to name = Foo title = "Wizz bang wallop" foo = { firstname = Joe lastname = Blogs } METHODS
BUGSConfig::Record has the following limitations
These limitations may be fixed in a future release if there is demand from users... AUTHORSDaniel Berrange <dan@berrange.com>COPYRIGHTCopyright (C) 2000-2007 Daniel P. Berrange <dan@berrange.com>SEE ALSOperl(1)
Visit the GSP FreeBSD Man Page Interface. |