Perl命令行参数

本文概述

命令行参数以与其他任何语言相同的方式发送到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的目录中

Perl命令行参数1

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

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

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

Perl命令行参数2

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


使用循环的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身份运行脚本。

Perl命令行参数3

查看上面的输出, 它还会显示在命令行上传递的总参数。在这里, 我们传递了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。反斜杠(\)表示我们正在传递对该变量的引用。

仅当我们通过传递类似于参数名称并以(-)开头但未在此脚本中声明的内容来运行此脚本时, 此脚本才会切换为部分。

现在, 我们将运行该程序。

输出

Perl命令行参数4

查看输出, 在控制台上输入age后, 我们得到了上面的输出。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?