On 2020-06-07 00:28, ToddAndMargo via perl6-users wrote:
Hi All,
Is there a way to do an "if" on "use lib", so
I do not have to keep commenting these back and forth?
# use lib 'C:/NtUtil', '.';
use lib 'C:/NtUtil', '.', 'K:/NtUtil';
Many thanks,
-T
Follow up:
With tons of help from Peter and others, this is my
keeper on "use lib":
-T
Perl 6: "use lib" delimiter:
Single quote each path and separate with a comma:
use lib '/usr/share/perl6/site/bin', '/home/linuxutil';
You can also feed it an array
use lib @path
To print you "use lib" path:
$ raku -e 'use lib "/home/todd","/home/bozo"; say $*REPO.repo-chain;'
(file#/home/bozo file#/home/todd inst#/home/todd/.raku
inst#/opt/rakudo-pkg/share/perl6/site
inst#/opt/rakudo-pkg/share/perl6/vendor
inst#/opt/rakudo-pkg/share/perl6/core ap# nqp# perl5#)
$ raku -e 'use lib "/home/todd","/home/bozo"; dd $*REPO.repo-chain;'
(CompUnit::Repository::FileSystem.new(prefix => "/home/bozo"),
CompUnit::Repository::FileSystem.new(prefix => "/home/todd"),
CompUnit::Repository::Installation.new(prefix => "/home/todd/.raku"),
CompUnit::Repository::Installation.new(prefix =>
"/opt/rakudo-pkg/share/perl6/site"),
CompUnit::Repository::Installation.new(prefix =>
"/opt/rakudo-pkg/share/perl6/vendor"),
CompUnit::Repository::Installation.new(prefix =>
"/opt/rakudo-pkg/share/perl6/core"),
CompUnit::Repository::AbsolutePath.new(next-repo =>
CompUnit::Repository::NQP.new(next-repo =>
CompUnit::Repository::Perl5.new(next-repo => CompUnit::Repository))),
CompUnit::Repository::NQP.new(next-repo =>
CompUnit::Repository::Perl5.new(next-repo => CompUnit::Repository)),
CompUnit::Repository::Perl5.new(next-repo => CompUnit::Repository))
$ raku -e 'use lib "/home/todd","/home/bozo"; dd
$*REPO.repo-chain.lines;'
("/home/bozo /home/todd /home/todd/.raku
/opt/rakudo-pkg/share/perl6/site /opt/rakudo-pkg/share/perl6/vendor
/opt/rakudo-pkg/share/perl6/core
CompUnit::Repository::AbsolutePath<88733600>
CompUnit::Repository::NQP<78635800>
CompUnit::Repository::Perl5<78635840>",).Seq
To add things to a "use lib" based on a test:
~~~~~~~~~~~~~~~~~~~~~
#!/usr/bin/env raku
# Note: this has to be the first thing at the top
my @LibPath;
BEGIN {
for ('K:/Windows/NtUtil', 'X:/NtUtil') -> $candidate {
push @LibPath, $candidate if $candidate.IO.d;
}
push @LibPath, 'C:/NtUtil';
push @LibPath, '.';
}
use lib @LibPath;
dd @LibPath;
dd $*REPO.repo-chain.lines;
~~~~~~~~~~~~~~~~~~~~~~~~~~
raku use.lib.test.pl6
Array @LibPath = ["K:/Windows/NtUtil", "C:/NtUtil", "."]
("K:\\Windows\\NtUtil C:\\NtUtil C:\\Users\\todd\\.raku
C:\\rakudo\\share\\perl6\\site C:\\rakudo\\share\\perl6\\vendor
C:\\rakudo\\share\\perl6\\core
CompUnit::Repository::AbsolutePath<131860432>
CompUnit::Repository::NQP<124427016>
CompUnit::Repository::Perl5<124427056>",).Seq