Richard Munroe > StanzaFile > StanzaFile

Download:
stanzafile/StanzaFile-1.05.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 1.05   Source  

NAME ^

StanzaFile - read, parse, and write files containing "stanzas".

SYNOPSIS ^

    # Parse a .ini format file into stanzas.
    #

    use StanzaFile ;
    my $a = new StanzaFile(file_name=>"/etc/wvdial.conf") ;

    # Add a new stanza to a StanzaFile.
    #
    $a->add(new Stanza('Stanza Name')) ;

    # Check for a stanza's existance.
    #
    if ($a->exists('New Stanza'))
    {
        ...
    } ;

    # Parse a .ini format file into stanzas.
    #

    use StanzaFile ;
    my $a = new StanzaFile ;
    $a->read(file_name=>"/etc/wvdial.conf") ;

    # Produce a string version of the StanzaFile
    # (Comments and other formatting are lost)
    #

    my $theString = $a->asString() ;

    # Write the StanzaFile.
    #
    $a->write("/etc/newFile.conf") ;

    # Add a new stanza to the file, replacing the stanza if it
    # already exists in the file.
    #
    $theNewStanza = new Stanza('New Stanza') ;
    $a->replace($theNewStanza) ;

    # Access the "header" stanza.
    #
    my $theHeaderStanza = $a->header() ;

    # Order in which the stanzas were added to the stanza file.
    #
    my @theAdditionOrder = $a->order() ;

    # Get a stanza object from the stanza file.
    #
    my $theStanzaObject = $a->stanza('The Stanza') ;

DESCRIPTION ^

A number of Linux configuration files are stored in a Windows format know as "stanzas" or WINDOWS.INI format. These files are of the form

     [name]
         variable=value
         variable1=value1
         ...

     [name1]
         variableA=valueA
         variable1A=value1A

and so on. This class is designed to provide parsing and processing capabilities for the WINDOWS.INI format and provide a general enough framework so that other formats of stanzas can be easily supported (see StanzaFile::Grub for an example).

With the StanzaFile and it's companion class Stanza it is reasonably easy to read, parse, process, and write virtually any type of stanza formatted information.

EXAMPLES ^

The following is a somewhat contrived example, but it shows the merging of two StanzaFiles.

    my $a = new StanzaFile("/etc/wvfile.conf") ;
    my $b = new StanzaFile("newWvfile.conf") ;

    foreach ($b->order())
    {
        if ($a->exists($_))
        {
            $a->stanza($_)->merge($b->stanza($_)) ;
        }
        else
        {
            $a->add($b->stanza($_)) ;
        } ;
    } ;

    $a->write(file_name=>"/etc/mergedWvdial.conf") ;

BUGS ^

None known.

WARNINGS ^

AUTHOR ^

Dick Munroe (munroe@csworks.com).

I'm looking for work (contract or permanent). I do a lot more than just hack Perl. Take a look at my:

Resume: http://www.csworks.com/resume Skills: http://www.csworks.com/skills CV: http://www.csworks.com/cv

for the gory details. If you see a match, drop me a note and we'll see what we can work out.

SEE ALSO ^

syntax highlighting: