[英]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}
我建議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.