将环境变量导入Perl[英] Importing environment variables to Perl

问题描述

我不确定导入是否正确使用.我是Perl和Bash的初学者.我已经在bash上设置了一个变量,所以当我这样做时:

echo $PRDIR

它打印一个字符串(这是目录名称)

我想将该字符串导入到Perl,我不知道该怎么做.我尝试了:

$varex = system("$PRDIR");
print "$varex";

以及

$varex = system("echo $PRDIR");
print "$varex";

但这不起作用(我理解最后一个,它打印为" 0",因为这是回声的返回值).我还尝试将stdout重定向到变量,但我不能.

推荐答案

如果您希望bash将变量导出到环境中,以便程序可以访问程序,则可以使用export indendin:

export PRDIR

在perl内部,您将使用%ENV哈希访问它:

my $varex = $ENV{"PRDIR"};
print "\$varex is: $varex\n";

其他推荐答案

另一种直接在perl中使用变量的解决方案:

在外壳中:

$ export PRDIR=foobar

在perl中:

#!/usr/bin/perl

use Modern::Perl;

use Env qw/PRDIR/;

say $PRDIR;

其他推荐答案

我想您需要这样的东西:

use Cwd 'abs_path';
use File::Basename;
my $self = abs_path($0);
my $bindir = dirname( abs_path($0) );
unless ($ENV{APP_ENV}) {
    warn "No APP_ENV, will try to get from bin/env.sh";
    exec("source $bindir/env.sh && /usr/bin/perl $self") || die "$!";
}

我的bin文件夹中有以下内容:

export APP_ENV=development

这种方法背后的想法是,如果我在运行perl代码或忘记这样做之前,我不需要打扰.我只需要运行我的perl程序,它将注意自己准备环境.

本文地址:https://www.itbaoku.cn/post/323313.html