How do you use a variable in lib Path?

后端 未结 3 1883
离开以前
离开以前 2021-02-19 14:43

I would like to use the $var variable in lib path.

my $var = \"/home/usr/bibfile;\"

use lib \"$var/lib/\";

However when I do th

相关标签:
3条回答
  • 2021-02-19 15:10

    Not sure about what you're trying to accomplish, but seems like a task for FindBin::libs:

    my $var;
    BEGIN { $var = "/home/usr/bibfile" };
    use FindBin::libs "Bin=$var", "base=lib";
    
    0 讨论(0)
  • 2021-02-19 15:13

    You can't, because the use directive is evaluated at compile time, while other variables are evaluated at runtime.

    If your lib is located somewhere relative to your original script, you can use the standard module FindBin:

    # $Bin from FindBin is the directory of the original script
    use FindBin;
    use lib "$FindBin::Bin/path/to/bib";
    use MyModule;
    
    0 讨论(0)
  • 2021-02-19 15:28

    Variables work fine in use lib, well, just like they do in any string. However, since all use directives are executed in BEGIN block, your variable will be not yet initialized at the moment you run use, so you need to put initialization in BEGIN block too.

    my $var;
    BEGIN { $var = "/home/usr/bibfile"; }
    use lib "$var/lib/";
    
    use Data::Dumper;
    print Dumper \@INC;
    

    Gives:

    $VAR1 = [
          '/home/usr/bibfile/lib/',
          # ... more ...
        ];
    
    0 讨论(0)
提交回复
热议问题