📜  Perl命令行参数| argv

📅  最后修改于: 2021-01-07 08:43:04             🧑  作者: Mango

Perl命令行参数

命令行自变量以与其他任何语言相同的方式发送到Perl程序。 @ARGV数组包含命令行参数。即使您使用“ use strict”,也无需使用变量。默认情况下,此变量始终存在,并且命令行中的值会自动放入该变量中。要访问脚本的命令行参数,您只需读取@ARGV数组。

Perl允许使用<>将@ARGV数组用作文件名。从<>读取时,$ ARGV包含当前文件的名称。

@ARGV数组元素

@ARGV数组与普通数组相同。它的第一个参数是$ ARGV [0],第二个参数$ ARGV [1],依此类推。

Perl命令行参数示例

让我们看一个print命令行参数的简单示例。在此示例中,我们将在命令行中以用户名作为自变量print欢迎消息。我们需要两个命令行参数作为用户的名字和姓氏。

步骤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 JavaTpoint.\n";

在上面的脚本中,首先它将检查是否提供了两个命令行参数。如果没有,它将给出错误的输入错误。如果是,它将分别将这些参数作为$ ARGV [0]和$ ARGV [1]处理。

步骤2在控制台中以perl welcome.pl运行脚本

注意:在发出此命令之前,请确保您位于包含脚本welcome.pl的目录中

这是您将在控制台中获得的输出。

步骤2在控制台中以perl welcome.pl身份运行脚本

在这里,我们仅从命令行传递一个参数。

在输出中,您会看到传递一个参数的错误输入消息。

使用循环的Perl命令行参数示例

现在,我们将运行一个循环以print命令行参数。在此示例中,您可以输入任意数量的参数。

步骤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.pl abcdefgh的身份运行脚本

查看上面的输出,它还会显示在命令行上传递的总参数。在这里,我们传递了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后,我们得到了上面的输出。