簡體   English   中英

使用argV在perl中進行多個命令行輸入

[英]More than one commandline input in perl using argV

如何在Perl中使用命令行參數從用戶那里輸入文件? 可能像是: wxp.pl - file {file path}
我是Perl的新手,所以建議我做些有幫助的事情。 以及如何在命令行中詢問多個參數。 例如:

exp.pl -file {file path}
           -x    {it's arg}
           -y    {y's arg}

如果要傳遞參數簡單,則可以執行以下操作:

perl exp.pl arg1 agr2

如果您還需要其他功能,請使用Getopt :: Long模塊。

我建議GetOpt :: Long實現這一目標。 但是,如果您想自己動手看看這樣的事情是否方便:

use strict;
use warnings;

# Usage check. For "perl xxx.pl -a arg1 -b arg2" args. should be even nos. 

if (scalar @ARGV == 0 or scalar @ARGV % 2 != 0) {
    print "Usage:\n\t$0 -a arg1 -b arg2 requires all args\n";
    exit 0;
}

# This one convert cmd line args. to hash ex. (perl xxx.pl -a arg1 -b arg2) to {-a => arg1, -b => arg2}
my %argHash = @ARGV;    

# Optional but see if all the args are present
my $maxArgs = 2;
if (scalar keys %argHash != $maxArgs) {
    print "Usage:\n\t$0 -a arg1 -b arg2 requires exactly $maxArgs args\n";
    exit 0;
}

# Parse arguments. 
print "$0:\n";
for my $key (keys %argHash) {
    print "\t $key: $argHash{$key}\n";  
}

1;

結果:

c:\swadhi\perl>perl cmdline.pl
Usage:
        cmdline.pl -a arg1 -b arg2 requires all args

c:\swadhi\perl>perl cmdline.pl -a "user" -b
Usage:
        cmdline.pl -a arg1 -b arg2 requires all args

c:\swadhi\perl>perl cmdline.pl -a "user" -b "Command"
cmdline.pl:
         -a: user
         -b: Command

c:\swadhi\perl>perl cmdline.pl -a "user" -b "Command" -c "mock"
Usage:
        cmdline.pl -a arg1 -b arg2 requires exactly 2 args

c:\swadhi\perl>perl cmdline.pl -a "user"
Usage:
        cmdline.pl -a arg1 -b arg2 requires exactly 2 args

GetOpt :: Long版本更簡單

use strict;
use warnings;
use Getopt::Long qw(GetOptions);

my $user_name;

GetOptions('user=s' => \$user_name) or die "Usage: $0 --user NAME\n";

if ($user_name) {
    print  $user_name, "\n";
}

結果:

c:\swadhi\perl>perl cmdline.pl -user Swadhi
Swadhi

c:\swadhi\perl>perl cmdline.pl

c:\swadhi\perl>perl cmdline.pl -p s
Unknown option: p
Usage: cmdline.pl --user NAME

c:\swadhi\perl>perl cmdline.pl -u "This should also work"
This should also work

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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