本文概述
命令行参数以与其他任何语言相同的方式发送到Perl程序。 @ARGV数组包含命令行参数。即使你使用” use strict”, 也无需使用变量。默认情况下, 此变量始终存在, 并且命令行中的值会自动放置在该变量中。要访问脚本的命令行参数, 你只需读取@ARGV数组。
Perl允许使用<>将@ARGV数组用作文件名。从<>读取时, $ ARGV包含当前文件的名称。
@ARGV数组元素
@ARGV数组与普通数组相同。它的第一个参数是$ ARGV [0], 第二个参数$ ARGV [1], 依此类推。
Perl命令行参数示例
让我们看一个打印命令行参数的简单示例。在此示例中, 我们将从命令行打印一条欢迎消息, 其中以用户名作为参数。我们需要两个命令行参数作为用户的名字和姓氏。
步骤1在系统中创建一个脚本welcome.pl。
#!/usr/bin/perl -w
# (1) check for the number of command-line arguments entered
$number_args = $#ARGV + 1;
if ($number_args != 2) {
print "Wrong entry. Please enter your full name.\n";
exit;
}
# (2) if two command line arguments received, $firstName=$ARGV[0];
$lastName=$ARGV[1];
print "Welcome $firstName $lastName at srcmini.\n";
在上面的脚本中, 首先它将检查是否提供了两个命令行参数。如果不是, 它将给出错误的输入错误。如果是, 它将分别将这些参数作为$ ARGV [0]和$ ARGV [1]处理。
步骤2在控制台中以perl welcome.pl运行脚本
注意:在发出此命令之前, 请确保你位于包含脚本welcome.pl的目录中
这是你将在控制台中获得的输出。
步骤2在控制台中以perl welcome.pl身份运行脚本
在这里, 我们仅从命令行传递一个参数。
在输出中, 你会看到传递一个参数的错误输入消息。
使用循环的Perl命令行参数示例
现在, 我们将运行一个循环以打印命令行参数。在此示例中, 你可以输入任意数量的参数。
步骤1在系统中创建一个脚本loop.pl。
#!/usr/bin/perl
$get_args = $#ARGV + 1;
print "Total command line arguments received: $get_args\n";
foreach $argument (0 .. $#ARGV) {
print "$ARGV[$argument]\n";
}
步骤2在控制台中以perl loop身份运行脚本。
查看上面的输出, 它还会显示在命令行上传递的总参数。在这里, 我们传递了8个参数。
Perl Getopt ::长
简单的命令行选项是使用?s选项完成的。使用Getopt :: Std和Getopt :: Long完成复杂的命令行选项。
Getopt代表GetOptions。它根据我们提供的配置处理@ARGV的内容。它根据处理返回true或false值。
例:
在此示例中, 我们很好地从命令行获取了用户年龄。
use strict;
use warnings;
use 5.010;
use Getopt::Long qw(GetOptions);
my $x;
GetOptions('from=s' => \$x) or die "Usage: $0 --from NAME\n";
say"According to your age which is $x:";
if ($x >=18) {
say "You are eligible to vote";
}
我们声明了一个变量$ x, 它将存储从标准控制台插入到–from的值。 from = s声明一个名为–from的命令行参数, 后跟一个字符串。它被进一步映射到变量$ x。反斜杠(\)表示我们正在传递对该变量的引用。
仅当我们通过传递类似于参数名称并以(-)开头但未在此脚本中声明的内容来运行此脚本时, 此脚本才会切换为部分。
现在, 我们将运行该程序。
输出
查看输出, 在控制台上输入age后, 我们得到了上面的输出。