in reply to Re: Parsing external config file
in thread Parsing external config file

Thanks for the suggestion, BBP.   I was going to do that very thing a while back, and researched as many config file parsers as I could find.  

A new twist has cropped up though.   It would simplify things a lot if I could include variable names for new passwords and community strings in the external config file.   Not the passwords themselves, mind you (the script prompts for and retains them in RAM).   I believe the term is "variable interpolation".

Do you know if AppConfig would allow that?   Or should I look at something like doing Perl code as a config file?   Ideally, it would go something like this, like templating I suppose:

[SetPass] conf t enable pass $newen line con 0 pass $newpass login line aux0 pass $newpass login line vty 0 4 pass $newpass login
    cheers,
    Don
    striving for Perl Adept
    (it's pronounced "why-bick")

Update: Hmmm... that sounds *very* interesting BoredByPolitics.   /me wanders off to take a look...

  • Comment on Re: (2) Parsing external config file (variable interpolation in config file?)
  • Download Code

Replies are listed 'Best First'.
Re: Re: (2) Parsing external config file (variable interpolation in config file?)
by BoredByPolitics (Scribe) on Jan 21, 2001 at 20:22 UTC
    Yes!

    You can define 4 types of config variable -

    • Boolean ("varname!")
    • Scalar ("varname=s")
    • Array ("varname=@")
    • Hash ("varname=%")
    So your line enable pass $newen would be best handled as a hash, which would be called enable.

    [section] has the effect of prefixing the varname with the section name, so login would become SetPass_login.

    Multiple assignments to the same array or hash add further elements.

    Both environment varibles, and those previously defined in the config file, can be expanded as values.

    Take a look at the pods for AppConfig::State and AppConfig::File for more details.

    Overall I'm very impressed with this module - it has definately saved me alot of time with the program I'm currently writing.

    Pete