我需要将列表传递给我的脚本 我怎么能这样做?
例如我有脚本:flow.pl 我需要传递给它的fubs列表:
fub1, fub2, fub3
和database1 =
的路径path1
和database2 =
的路径path2
我怎样才能获得这些参数?
(through $ARGV[i]?)
如果我这样做:
flow.pl fub1,fub2,fub3 path1 path2
并在代码中:
$listoffubs = $ARGV[0]
$path1 = $ARGV[1]
$path2 = $ARGV[2]
fubs列表获得一个单词的fubs名称。
答案 0 :(得分:7)
只要列表简短,就有了位置参数列表。一旦你进入了大量的参数或者你有一个内部结构的参数,那么你可能想看一下命名参数。
在这种情况下,我想我会考虑使用GetOpt::Long来实现命名参数。
答案 1 :(得分:5)
简单地拆分列表:
my @ListOfFubs = split /,/ , $listoffubs;
答案 2 :(得分:1)
你的参数将以空格分隔,所以是的,fub1,fub2,fub3
将是一个参数。只需使用空间,你会没事的。 E.g:
flow.pl fub1 fub2 fub3 path1 path2
my $fub1 = shift; # first argument is removed from ARGV and assigned to $fub1
或者
my $fub1 = $ARGV[0]; # simple assignment
一下子
my ($fub1,$fub2,$fub3,$path1,$path2) = @ARGV; # all are assigned at once
请注意,使用shift
会从@ARGV
删除参数。
如果你有一个可能不同的参数列表,这是一个简单的修复,将它们放在最后,然后执行:
flow.pl path1 path2 fub1 fub2 fub3 ... fubn
my $path1 = shift;
my $path2 = shift; # remove first two arguments, then
my @fubs = @ARGV; # assign the rest of the args to an array
对于更复杂的参数处理,请使用模块,例如Getopt::Long。