Perl 中的 bash 导出相当于什么?

发布于 2024-12-02 20:39:29 字数 214 浏览 0 评论 0原文

我正在将 bash 脚本转换为 Perl。我不确定 export 的等价物是什么。

LOC=/tmp/1/
export LOC

例如,对于上面两行,等效的 Perl 代码是什么?

my $LOC = '/tmp/1/';
# what should go here?

I am converting a bash script to Perl. I am not sure what the equivalent of an export is.

LOC=/tmp/1/
export LOC

For example, for the above two lines, what would be the equivalent Perl code?

my $LOC = '/tmp/1/';
# what should go here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

花伊自在美 2024-12-09 20:39:29
$ENV{LOC} = "/tmp/1";

%ENV 的内容被传播到Perl 脚本的子进程。

$ENV{LOC} = "/tmp/1";

The contents of %ENV are propagated to the environment of the child processes of a Perl script.

欲拥i 2024-12-09 20:39:29

模块环境(请参见 http://perldoc.perl.org/Env.html

面犯桃花 2024-12-09 20:39:29

在 bash 中,您可能想做这样的事情:

EXPORT_CMD=/tmp/${0}_exports.bsh
perl ...
chmod +x $EXPORT_CMD
$EXPORT_CMD
rm $EXPORT_CMD

在 Perl 中,这样:

sub export (@) {
    state $exh;
    unless ( $exh ) {
        my $export_cmd_path = $ENV{EXPORT_CMD};
        open( $exh, '>>', $export_cmd_path )
            or die "Could not open $export_cmd_path!"
            ;
    }
    while ( @_ > 1 ) { 
        my ( $name, $value ) = (( uc shift ), shift );
        # If you want it visible in the current script:
        {   no strict 'refs';
            ${"::$name"} = $value;
        }
        $exh->print( qq{export $name "$value"\n} );
    }
}

然后,只需编写以下代码即可:

export LOC => '/tmp/1/';

问题是大多数程序无法更改调用它们的 shell 变量。

Inside the bash, you might want to do something like this:

EXPORT_CMD=/tmp/${0}_exports.bsh
perl ...
chmod +x $EXPORT_CMD
$EXPORT_CMD
rm $EXPORT_CMD

Inside the Perl, this:

sub export (@) {
    state $exh;
    unless ( $exh ) {
        my $export_cmd_path = $ENV{EXPORT_CMD};
        open( $exh, '>>', $export_cmd_path )
            or die "Could not open $export_cmd_path!"
            ;
    }
    while ( @_ > 1 ) { 
        my ( $name, $value ) = (( uc shift ), shift );
        # If you want it visible in the current script:
        {   no strict 'refs';
            ${"::$name"} = $value;
        }
        $exh->print( qq{export $name "$value"\n} );
    }
}

And then, it's simply a matter of coding this:

export LOC => '/tmp/1/';

The problem is that most programs cannot change shell variables that they were called from.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文