gpt4 book ai didi

perl - 将多个值传递给命令行参数并将其存储为数组

转载 作者:行者123 更新时间:2023-12-02 14:53:21 24 4
gpt4 key购买 nike

我正在尝试将多个值作为 -cmd 'cp abc def' 'ls abd/def/ghi' 等传递给命令行参数......并希望将它们单独存储为数组的一个元素。我可以把它变成一个字符串并使用 split 函数。我正在尝试使用 GetOptions 实现相同的目标。我不确定它提供数组大小的原因。请在这件事上给予我帮助。

use strict;    
use warnings;
use Getopt::Long;

my( $cmd ,$pro, $dom );

GetOptions ( 'pro=s' => \$pro ,
'dom=s' => \$dom ,
'cmd=s@{1,}' => \$cmd );



print $pro."\n".@$cmd."\n".$dom."\n" ;

-->./abc.pl -pro JKFK -cmd 'ls abc/bcd/def' 'cp abn/cdf ads' -dom ABC


Expected:
JKFK
['ls abc/bcd/def','cp abn/cdf ads']
ABC

Actual Results :
JKFK
2
ABC

我正在尝试获取用户提供的这些系统命令,这些命令直接转到数据库表。我试图将这些系统命令存储为数组中的一个元素,这样就可以很容易地解析和插入到数据库表中。请帮我将它们放入数组中。

谢谢。

最佳答案

您正在计算标量环境中的数组:

print $pro."\n".@$cmd."\n".$dom."\n" 

尝试:

print $pro."\n@$cmd\n".$dom."\n"

换句话说,使用插值,对于数组,它等同于 join($", @array) - 其中 $" 默认为空格。这意味着您可以使用以下内容:

print $pro."\n".join(' ', @$cmd)."\n".$dom."\n" 

关于perl - 将多个值传递给命令行参数并将其存储为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54373398/

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