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

Reply via email to