gpt4 book ai didi

perl - 使用 @ARGV 从嵌套反引号调用时返回变量

转载 作者:行者123 更新时间:2023-12-04 09:23:57 25 4
gpt4 key购买 nike

在 visudo Ubuntu 中,我将此程序列入白名单(出于安全目的,我这样做,参数化了所有命令)

myuser ALL=(root) NOPASSWD:/App/Filter_Parameters_Wrap.pm *
在程序.pl
my $capture = qx("/usr/bin/sudo /App/Filter_Parameters_Wrap.pm kernel_version");
在模块 Filter_Parameters_Wrap 中:
my $fuction  = $ARGV[0];
print filters_dispatch($fuction) if defined $fuction;

sub filters_dispatch {
my $filter = shift;

my $dispatch = {
kernel_version => \&filter_kernel_version,
};

return $dispatch->{$filter}->();

}

sub filter_kernel_version {
my $command = '/bin/uname -a';
my $sudo = App::Sudo::Main_Sudo->root($command);
utf8::decode($sudo);
return $sudo;
}
这种方法是有效的,但是我必须在 print filters_dispatch 中进行打印(直接打印一个变量字符串),这样我才能得到函数返回的输出 filter_kernel_version在变量 $capture
在某些情况下,函数内部 filter_kernel_version我想创建一个哈希并作为匿名哈希返回而不直接打印,但是这种方式不起作用
你能推荐一个更好的方法吗?

最佳答案

无论您使用什么选项在进程之间进行通信,都将被限制为发送字节序列。这意味着您将需要以某种方式序列化您的哈希。使用 JSON 编码(例如使用 Cpanel::JSON::XS )可能是一种简单的方法。

关于perl - 使用 @ARGV 从嵌套反引号调用时返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63051597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com