| Config-Setting documentation | Contained in the Config-Setting distribution. |
Config::Setting::Chunk - Representation of a configuration file
use Config::Setting::Chunk; my $chunk = Config::Setting::Chunk->new; $chunk->add_section( "login" ); $chunk->set_item( "login", "username", "fred" ); my @sections = $chunk->sections; my $username = $chunk->get_item( "login", "username" );
This class is a representation of a configuration file. A chunk consists of zero or more sections, each of which consists of zero or more items.
Class Method. Constructor.
Create a new section named SECTION. Has no effect if SECTION is already present in this chunk.
Return a list of all sections in this chunk, in the order in which they were added.
Returns true or false if SECTION is present or not in this chunk.
Returns a list of all keys present in SECTION.
Set the item KEY to have VALUE in SECTION. if SECTION does not exist, it will be created.
Return the value of KEY in SECTION. Returns undef if KEY or SECTION does not exist.
Return the value of KEY in the first section which contains it, or undef if no section contains it.
Returns the chunk in windows .INI style format. This may be useful for debugging.
Dominic Mitchell, <cpan (at) happygiraffe.net>
| Config-Setting documentation | Contained in the Config-Setting distribution. |
# Copyright (C) 2004 by Dominic Mitchell. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE.
package Config::Setting::Chunk; use strict; use vars qw($VERSION $rcsid); use Carp; $VERSION = ( qw( $Revision: 765 $ ) )[1]; $rcsid = '@(#) $Id: Chunk.pm 765 2005-08-31 20:05:59Z dom $ '; sub new { my $class = shift; return bless {}, $class; } sub add_section { my $self = shift; my ( $sect ) = @_; croak "usage: add_section(sect)" unless $sect; unless ( exists $self->{ Sections }{ $sect } ) { $self->{ Sections }{ $sect } = {}; $self->{ SectionOrder } ||= []; push @{ $self->{ SectionOrder } }, $sect; } return; } sub sections { my $self = shift; return @{ $self->{ SectionOrder } || [] }; } sub has_section { my $self = shift; my ( $sect ) = @_; croak "usage: has_section(sect)" unless $sect; return exists $self->{ Sections }{ $sect }; } sub section_keys { my $self = shift; my ( $sect ) = @_; croak "usage: section_keys(sect)" unless $sect; return sort keys %{ $self->{Sections}{$sect} || {} }; } sub set_item { my $self = shift; my ( $sect, $key, $val ) = @_; croak "usage: set_item(sect,key,val)" unless $sect && $key && $val; $self->add_section( $sect ); $self->{ Sections }{ $sect }{ $key } = $val; return; } sub get_item { my $self = shift; my ( $sect, $key ) = @_; croak "usage: get_item(sect,key)" unless $sect && $key; # Avoid autovivification. return unless $self->has_section( $sect ); return $self->{ Sections }{ $sect }{ $key }; } sub get { my $self = shift; my ( $key ) = @_; foreach my $sect ( $self->sections ) { my $val = $self->get_item( $sect, $key ); return $val if defined $val; } return; } sub to_string { my $self = shift; my $str = ''; foreach my $sect ( $self->sections ) { $str .= "[$sect]\n"; foreach my $key ( $self->section_keys( $sect ) ) { $str .= $key . '=' . $self->get_item( $sect, $key ); $str .= "\n"; } $str .= "\n"; } return $str; } 1; __END__ # Local Variables: # mode: cperl # cperl-indent-level: 8 # indent-tabs-mode: nil # cperl-continued-statement-offset: 8 # End: # # vim: set ai et sw=8 :