On 2020-05-13 22:27, Bruce Gray wrote:
On May 13, 2020, at 9:37 PM, ToddAndMargo via perl6-users <[email protected]> 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, -THi 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)
Excellent! Thank you!
