[英]Perl: how can i pass list to script?
我需要將列表傳遞給我的腳本我該怎么辦?
例如我有腳本: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名稱。
只要列表簡短,就可以獲得位置參數列表。 一旦你進入大量的參數或者你有一個內部結構的參數,那么你可能想看一下命名參數。
在這種情況下,我想我會考慮使用GetOpt :: Long來實現命名參數。
只需拆分列表:
my @ListOfFubs = split /,/ , $listoffubs;
你的參數將是空格分隔的,所以是的, fub1,fub2,fub3
將是一個參數。 只需使用空間,你會沒事的。 例如:
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 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.