运行perl脚本时使用外部变量,如bash

时间:2016-07-16 19:31:26

标签: perl

问题很简单,但我还没有在谷歌找到答案。

如何在perl中运行这样的东西?

[$] VARIABLE=foo ./script.sh

我有一个perl脚本(例如Nvidia Cuda安装程序),脚本中有硬编码变量,但我想在运行脚本而不是编辑脚本时设置这些变量。

在bash中,它就像在上面发布的一样,但我不知道如何让它在perl上运行。

是否可以这样做?

问候。

编辑:澄清:这是install-linux.pl脚本的一个小部件:

sub can_add_for_all_users()
{
    my $filename = "/usr/share/applications/.nvidiatoolkitinstall";
    system("touch $filename 2>/dev/null");
    if (-f $filename)
    {
        system("rm $filename");
        return 1;
    } else {
        return 0;
    }
}

我想运行这样的东西:

[$] filename="/tmp/.nvidiatoolkitinstall" perl install-linux.pl -destdir="${pkgdir}" -prefix="/opt/cuda" -noprompt -nosymlink

但这不起作用

我可以用sed编辑脚本:

[$] sed 's|/usr/share/applications/.nvidiatoolkitinstall|/tmp/.nvidiatoolkitinstall|g' -i install-linux.pl

但是我希望将变量解析为perl,就像bash可以做的那样

2 个答案:

答案 0 :(得分:1)

您正在寻找“如何使用perl读取环境变量”。 Perl有%ENV哈希,它保留所有这些变量。您只需使用$ENV{'VARIABLENAME'}访问它们即可。简单的例子:

#!/usr/bin/perl
print $ENV{'VARIABLE'};

而不是VARIABLE=blahblah script.pl返回blahblah

答案 1 :(得分:0)

local $ENV{VARIABLE} = 'foo';
system('./script.sh');