in reply to Cross-platform config file parsing

Hi there!!!, this is how I usually do it, hmmm
but without the error checking here ;))
sub ReadConfig($) { my $ConfigFile=shift; my %Config; my $Item; open CONFIG,"<$ConfigFile" or return %Config; while(<CONFIG>) { chomp; next if ((/^#/)||(/^\s*$/)); # Yeah, I'm sorry for the .* here... if (/^\[(.*)\]$/) {$Item=$1;next;}; if($Item) { my ($SubOption,$Value)=split /\=/; if ($Value) { push @{$Config{$Item}{$SubOption}},$Value; } else push @{$Config{$Item}},$_; }; }; close CONFIG; return(%Config); };

Anyways.. this is close to how I do it, this code not tested 'n stuff

GrtZ!
  • ChOas


  • Upd. Oh yeah, I usually read the config as quick as possible,
    and do the error/sanity checking in another sub, dunno why,
    but it gives me kinda clean code, I like that...

    Even though I'm Lazy ;))

    Upd2. Just to clear things up, this will ofcourse leave you with a hash something like this:
    $Config{'parm commands'} |-{'snmp-server community RO'} eq 'notpublic'; |-{'timeout'}==10; @{$Config{'no snmp-server community'}}=>(public,private,secret,bogus);

    Hope it helps....

    Replies are listed 'Best First'.
    RE: (2) Cross-platform config file parsing
    by ybiC (Prior) on Oct 30, 2000 at 20:45 UTC
      Thanks ChOas.   That's just what I had in mind.
          cheers,
          Don
          striving for Perl Adept