Hope this helps :-)
Basically the %hash variable contains another hash, and with spaces in
keys you cannot use them with "<>"
use Config;
use Config::INI;
my Str $IniFile = slurp "config.ini";
my %hash = Config::INI::parse($IniFile);
dd %hash;
print "\n";
for %hash.kv -> $section_name, %section_value {
put "on $section_name we have: ";
for %section_value.kv -> $key, $value {
put "$key -> $value";
}
}
print "\n";
put %hash{'Backup paramters'}<target>;
ToddAndMargo via perl6-users <[email protected]> escreveu no dia
sábado, 30/05/2020 à(s) 00:02:
>
> Hi All,
>
> I an not figure out how to read the hash.
>
>
> ~~~~~~~~~~~ ini.test.pl6.ini ~~~~~~~~~~~~~
> # Raku: Confug::INI test INI
> # edit at your own risk
>
> [Backup paramters]
> target=B:\myDocsBackp\backup1
> partition=BACKUP
>
> [eMail]
> smtp=smtp.bozo.com
> [email protected]
> port=587
> ~~~~~~~~~~~ /ini.test.pl6.ini ~~~~~~~~~~~~~
>
>
> ~~~~~~~~~~~ ini.test.pl6 ~~~~~~~~~~~~~
> #! /usr/bin/env raku
>
> #`{
> # zef install Config
> # zef install Config::INI
>
>
>
> https://github.com/tadzik/perl6-Config-INI/blob/master/lib/Config/INI.pm
> line 45 starts documtation
>
> use Config::INI;
> my %hash = Config::INI::parse_file('config.ini');
> #or
> %hash = Config::INI::parse($file_contents);
> say %hash<_><root_property_key>;
> say %hash<section><in_section_key>;
>
> This module provides 2 functions: parse() and parse_file(), both taking
> one C<Str> argument, where parse_file is just parse(slurp $file).
> Both return a hash which keys are either toplevel keys or a section
> names. For example, the following config file:
>
> foo=bar
> [section]
> another=thing
>
> would result in the following hash:
> }
> # { '_' => { foo => "bar" }, section => { another => "thing" } }
>
>
> use Config;
> use Config::INI;
>
> my Str $IniFile = slurp "ini.test.pl6.ini";
> my %hash = Config::INI::parse($IniFile);
>
> dd %hash;
> print "\n";
>
> for %hash.kv -> $key, $value { print " hash<$key> = [$value]\n\n"; }
> print "\n";
> ~~~~~~~~~~~ /ini.test.pl6 ~~~~~~~~~~~~~
>
> ~~~~~~~~~~~~~ run the test ~~~~~~~~~~~~
> $ ini.test.pl6
>
> Hash %hash = {"Backup paramters" => ${:partition("BACKUP"),
> :target("B:\\myDocsBackp\\backup1")},
> :eMail(${:address("bozo\@theclown.com"), :port("587"),
> :smtp("smtp.bozo.com")})}
>
> hash<Backup paramters> = [partition BACKUP
> target B:\myDocsBackp\backup1]
>
> hash<eMail> = [address [email protected]
> port 587
> smtp smtp.bozo.com]
> ~~~~~~~~~~~~~ /run the test ~~~~~~~~~~~~
>
>
> How do I read the hash so I get section
> `[eMail]` `smtp`? (Or any of the other values
> as well.)
>
>
> Many thanks,
> -T