StanzaFile - read, parse, and write files containing "stanzas".
# 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') ;
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.
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") ;
None known.
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.
To install StanzaFile, copy and paste the appropriate command in to your terminal.
cpanm
cpanm StanzaFile
CPAN shell
perl -MCPAN -e shell install StanzaFile
For more information on module installation, please visit the detailed CPAN module installation guide.