Hi Todd! On Thu, 14 May 2020 14:40:49 -0700 ToddAndMargo via perl6-users <perl6-us...@perl.org> wrote:
> On 2020-05-14 08:22, Peter Pentchev wrote: > > On Thu, May 14, 2020 at 04:39:18AM -0700, ToddAndMargo via perl6-users > > wrote: > >> On 2020-05-13 22:27, Bruce Gray wrote: > >>> > >>> > >>>> On May 13, 2020, at 9:37 PM, ToddAndMargo via perl6-users > >>>> <perl6-us...@perl.org> wrote: > >>>> > >>>> Hi All, > >>>> > >>>> Do we have anything like Bash's "." statement where > >>>> we can read in a bunch of values from a .cfg file? > >>>> (I think it is called "include", but I am not sure.) > >>>> > >>>> . /etc/sysconfig/network-scripts/ifcfg-br0 > >>>> > >>>> which populates these (and other) variables > >>>> > >>>> DEVICE=br0 > >>>> TYPE=Bridge > >>>> ONBOOT=yes > >>>> USERCTL=yes > >>>> DELAY=0 > >>>> NM_CONTROLLED=yes > >>>> BOOTPROTO=none > >>>> PREFIX=24 > >>>> ... > >>>> > >>>> Many thanks, > >>>> -T > >>> > >>> Hi Todd, > >>> > >>> FYI, the `.` Bash command is also called `source`, which is easier to > >>> search on the Web, and clearer in email: https://ss64.com/bash/source.html > >>> > >>> The closest equivalent in Raku is: > >>> https://docs.raku.org/routine/EVALFILE > >>> , which could be used for config data like so: > >>> $ cat a.dat > >>> $foo = "bar"; > >>> $baz = "quxx"; > >>> > >>> $ perl6 -e 'our ($foo, $baz); EVALFILE "a.dat"; .say for $foo, > >>> $baz;' bar > >>> quxx > >>> > >>> , but please do not use it for this purpose. > >>> > >>> EVALFILE is in all-caps to show that it might be dangerous and not for > >>> general use; it is “grep-able evil”, and could eval any valid Raku code, > >>> even evil things like `run “rm -rf /“`. > >>> > >>> IMHO, Bash's `source`-style of loading variables pollutes the main > >>> namespace and causes hard-to-debug “action at a distance”. In Raku (or > >>> any other dynamic language), the use of some kind of Config module is > >>> safer and cleaner: https://modules.raku.org/t/CONFIG > >>> https://github.com/raku-community-modules/perl6-Config-JSON > >>> https://github.com/Skarsnik/perl6-config-simple > >>> https://metacpan.org/pod/Config::Tiny > >>> > >>> For example: > >>> > >>> $ cat config.json > >>> { > >>> "baz": "quxx", > >>> "foo": "bar” > >>> } > >>> $ perl6 -e 'use Config::JSON; my %c; %c{$_} = jconf($_) for <foo baz>; > >>> say %c{$_} for <foo baz>;' bar > >>> quxx > >>> > >>> $ cat b.dat > >>> foo = bar > >>> baz = quxx > >>> $ perl6 -e 'use Config::Tiny:from<Perl5>; my $conf = > >>> Config::Tiny.read("b.dat"); .say for $conf<_><foo baz>' bar > >>> quxx > >>> > >>> > >>> — > >>> Hope this helps, > >>> Bruce Gray (Util of PerlMonks) > >> > >> > >> Hi Bruce, > >> > >> I looked at the first two links above. Neither showed > >> the format of the data being read. But you did. Is > >> there some reason why the two links did not show the format? > > > > Well, they do both say they read .ini-style files. I think that they > > will both be able to read simple key=value files like the network > > definition sysconfig ones on RedHat-style systems that you seem to want. > > Keep in mind that the shell probably interprets a bit more, so some > > configuration-reading modules may e.g. return the quotes around the > > value or something like that; take them for a spin and see. > > Also, it's almost certain that these modules will not be able to help if > > the files that you read make use of the fact that the shell performs > > variable expansion: they will not be able to expand other variables in > > lines like: > > > > KEYFILE="/etc/keys/$HOSTNAME.key" > > > > or something like that. > > > > If you come across files like that, you may have to write your own > > parser. > > > > For some general information on ini-like files, see > > https://en.wikipedia.org/wiki/INI_file > > > > G'luck, > > Peter > > > > Hi Peter, > > That was extremely helpful! I never realized INI > files were standardized. > The INI formats have no official (ISO/etc.) standard, and there are many variations of them. See, for example, the various options that https://metacpan.org/pod/Config::IniFiles accepts (note that I comaintain it now). > I will be playing with them shortly. I really want > to see how CONFIG handles section titles. > > Thank you! > > -T -- Shlomi Fish https://www.shlomifish.org/ Funny Anti-Terrorism Story - https://shlom.in/enemy Summer Glau showed Kermit the Frog how easy it can be to be green. — https://www.shlomifish.org/humour/bits/facts/Summer-Glau/ Please reply to list if it's a mailing list post - https://shlom.in/reply .