Need help choosing which initialization module to use.
I have a large program which processes batches of text files (derived
from MS-Word, .pdf, Excel etc.) For each batch, there's an
initialization file. Right now, the details of each initialization
get wrapped inside a function. This illustrates what I have currently:
sub RqtInitSABER{
my($Args) = @_;
$runSwitches =
{topArgs => {
fileReadFn => \&eat_AvionicsFMEA,
hiliteCol => [1,3,4,5],
xtraTh => {1 => {colspan=>2, text=> ' '},
3 => {colspan=>4, text=> 'Front'}}},
flamencoArgs =>
spec => # For what goes in the flamenco/specifications.py file
+.
{PAGE_TITLE => 'SABER Requirements',
PAGE_HEADING => 'SABER Software Requirements Oct Release',
}
I'm imagining I need something like:
[topArgs]
fileReadFn= eatAvionicsFMEA
hiliteCol= [1,3,4,5]
[[xtraTh]]
[[[1]]]
colspan=2
text=' '
[[[3]]]
colspan=4
text='Front'
[flamencoArgs]
[[spec]]
PAGE_TITLE = SABER Requirements
PAGE_HEADING = SABER Software Requirements Oct Release
I want to change this to a declarative .ini style. I've looked at Config::Simple and
Config::IniFiles. But I can't figure out how to do a few things. I need to have:
- Hashes more than two levels deep. I need subsections and subsubsections as well as sections.
- A more compact way of listing arrays. I could do something like
hiliteCol= [1,3,4,5]
rather than
hiliteCol=1
hiliteCol=3
hiliteCol=4
hiliteCol=5
- I need to read in function references (like fileReadFn = \&eatAvionicFMEA; am I buying myself
horrible problems by reading in the function name and using eval to get to the function ref?
- A way to have delimited whitespace. Writing something like
text=
with the whitespace on the right being significant seems like a very bad idea.
I want to get away from having my config files be Perl code, but I'm not hard-over on using this style
of .ini file. I just don't want to roll-my-own initialization code. Do some of the existing packages
get me what I need?
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.