簡體   English   中英

Perl:我如何將列表傳遞給腳本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM