From: "Ing. Branislav Gerzo" <[EMAIL PROTECTED]>
> it isn't of course only foo. I am parsing ini file, which looks like:
> 
> [ini]
> foo=test
> bar=foo [%foo%] bar
> 
> and of course, I want to get (after using some config module)
> $bar='foo test bar'


Is it really necessary to use [%foo%]? I'm not sure about others but 
my Config::IniHash optionaly interpolates system variables into the 
options if you have them specified like this:

        [ini]
        bar=foo %foo% bar


        use Config::IniHash qw(ReadINI);
        my $config = ReadINI( $filename, 
                systemvars => 1, case => 'preserve'
        );

If you want to use a different set of variables to insert into the 
options you just need to temporarily change %ENV:

        use Config::IniHash qw(ReadINI);
        my $config;
        {
                local %ENV = (foo => 1234, bar => 987, ...);
                $config = ReadINI( $filename, systemvars => 1, case => 'preserve');
        }

If you realy need to use that syntax you may use Config::IniHash's 
forValue option like this:

        use Config::IniHash qw(ReadINI);
        my %data = ( foo => 1234, ... );
        my $config = ReadINI( $filename,
                systemvars => 0,
                case => 'preserve',
                forValue => sub {
                        my ($name, $value) = @_;
                        $value =~ s/\[%([^%]+)%\]/$data{$1}/g;
                        return $value;
                }
        );

This way the module does the INI file parsing and you can tweak the 
values as they are read.

HTH, Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
        -- Terry Pratchett in Sourcery


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to