Perl @ARGV 获取命令参数
命令 获取 参数 Perl argv
2023-09-14 08:58:44 时间
- see also
- Dumper 字符串花perl的数据结构
- Getopt::Long 解析复杂的命令行参数
# temp.pl
use strict;
use warnings;
use Data::Dumper qw(Dumper);
print Dumper \@ARGV;
执行上面的代码,打印:
$ perl temp.pl -a=1 -b=2 -c
$VAR1 = [
'-a=1',
'-b=2',
'-c'
];
脚本名为“$0”与“FILE”类似
print "$0 \n";
print __FILE__ . "\n"
$ perl temp.pl -a=1 -b=2 -c
temp.pl
temp.pl
从@ARGV提取命令行参数
可以使用常规数组操作符来获取参数
my $name = $ARGV[0];
my $number = $ARGV[1];
my ($name, $number) = @ARGV;
my $name = shift @ARGV;
检查参数
my ($name) = @ARGV;
if(!defined($name)){
die "need name.\n";
}
# 简写
my $name = $ARGV[0] // die "need name. \n";
# or set defualt value
my ($name) = @ARGV;
$name = $name // 'default';
print "$name \n";
使用“Getopt::Long”解析参数
#!/usr/bin/perl
use strict;
use utf8;
use autodie;
use warnings;
use Encode qw(decode encode);
use Data::Dumper qw(Dumper);
use Getopt::Long qw(GetOptions);
my $name = "ajanuw";
my $age = 0;
GetOptions ("name=s" => \$name, # string
"age=i" => \$age) # string
or die("Error in command line arguments\n");
print "$name - $age \n";
执行上面的脚本:
$ perl temp.pl --name=Ajanuw --age=12
Ajanuw - 12
或则其它方式
--age 12
-age 12
-age=12
-a 12
无值参数
my $help;
GetOptions ("help" => \$help) or die("Error in command line arguments\n");
print "... \n" if(defined($help));
$ perl temp.pl --help
...
数组参数
my @arr;
GetOptions ("arr=s" => \@arr) or die("Error in command line arguments\n");
print Dumper @arr;
$ perl temp.pl -a=a -a=b
$VAR1 = 'a';
$VAR2 = 'b';
hash参数
my %hash;
GetOptions ("hash=s" => \%hash) or die("Error in command line arguments\n");
print %hash;
$ perl temp.pl --hash name=ajanuw --hash age=12
age12nameajanuw
GetOptions函数仅在相关时才处理以短划线开头的参数及其对应的值。处理完选项后,会将其从@ARGV中删除。(选项名称和选项值都将被删除。)命令行上的其他任何非关联值都将保留在@ARGV中。
use Data::Dumper qw(Dumper);
use Getopt::Long qw(GetOptions);
my $name;
GetOptions ("name=s" => \$name) or die("Error in command line arguments\n");
print "$name \n" if(defined($name));
print Dumper \@ARGV;
$ perl temp.pl -n Ajanuw a.txt b.txt
Ajanuw
$VAR1 = [
'a.txt',
'b.txt'
];
处理完选项后,将a.txt和b.txt保留在@ARGV中。现在,我们可以对它们执行任何操作,例如,可以使用foreach遍历@ARGV数组。
相关文章
- arp命令_arp协议的主要功能是什么
- linux命令查看所有进程_获取当前进程句柄
- linux 命令之查看文件内容
- Linux命令之cd详解程序员
- 深入理解Oracle数据库备份命令(oracle数据库备份命令)
- Linux查看分辨率:从命令行获取更多信息(linux查看分辨率命令)
- 使用Linux命令行运行脚本(运行linux脚本的命令)
- 命令Linux下获取系统时间的date命令(linux中date)
- 功能Linux LS命令中 s 选项功能简介(linux的ls的-s)
- Linux系统下数据库备份的简单操作(linux数据库备份命令)
- 命令 Linux下LS L命令:快速查看文件详细信息(linux的ls-l)
- Linux下操作日期的命令介绍(linux日期命令)
- Linux命令:获取当前路径(linux命令当前路径)
- 查看MySQL历史命令:简单而有效(mysql查看历史命令)
- Linux命令:查找文件的绝对路径(linux获取绝对路径)
- 轻松掌握Linux命令:如何获取命令结果(linux命令结果获取)
- 使用Linux命令字典知识获取之旅(linux命令字典)
- 极速启动:Oracle数据库的命令行体验(oracle数据库启动命令)
- 探究获取Redis的慢命令(获取redis的慢命令)
- 如何快捷获取Redis时间(获取redis时间命令)
- 使用Redis命令轻松获取数据(获取redis数据指令)
- cmd命令查找MySQL安装位置(cmd获取mysql位置)
- 使用redis查询命令轻松获取服务器信息(服务器redis查询命令)
- redis中获取锁的命令详解(取得redis锁的命令)
- Redis卸载的正确姿势熟练掌握卸载命令的用法(卸载redis的命令)
- 善用Redis通道命令加快信息传递(redis通道命令)
- Redis之获取值指令重新定义精准取值(redis获取值命令)