perl 接收命令行参数
(2013-06-05 09:09:31)
标签:
perl参数命令行it |
分类: perl编程 |
方法一: @ARGV:perl
命令行参数
当perl脚本运行时,从命令行上传递给它的参数存储在内建数组@ARGV中,@ARGV是PERL默认用来接收参数的数组,可以有多个参数,$ARGV[0]是表示接收到的第一个参数,$ARGV[1]表示第二个。
@ARGV按照参数的顺序存放,-i,-o等以及相应的参数都看作一个参数存放在@ARGV中,可以通过while语句来逐个判断参数。
使用方法为:
perl my.pl
$ARGV[0] $ARGV[1]
open(ONE,"$ARGV[0]") or die $!;
open(TWO,"$ARGV[1]") or die $!
方法二:perl 模块 Getopt和vars来接收从命令行传递的参数,自动解析分配在qw里的变量里,可以不用按顺序输入
use Getopt::Std;
use vars qw($opt_i $opt_o);
getopts('i:o:');
my $infile=$opt_i if $opt_i;
my $outfile=$opt_o if $opt_o;
open(OUT,'>$outfile')||die "cann't create $outfile:$!\n";
open(IN,$infile)||die "cann't open file $infile:$!\n";
Getopt::Std模块的功能:
初始化perl命令行中所接受的参数,简化了命令行参数的解析。
例子:
#!/usr/bin/perl -w
use strict;
use Getopt::Std;
use vars qw($opt_a $opt_b $opt_c);
getopts('d:f:p:');
print "\$opt_a =>; $opt_a\n" if $opt_a;
print "\$opt_b =>; $opt_b\n" if $opt_b;
print "\$opt_c =>; $opt_c\n" if $opt_c;
输出如下:
[root@mail test]# ./getopt.pl -a aa -b bb -c cc
$opt_a =>; aa
$opt_b =>; bb
$opt_c =>; cc
说明:
vars 是一个Perl的pragma,用来预定义全局变量。这些预定义后的全局变量qw()列表中的在整个Perl文件中皆可使用,即使使用了use strict也不会报警。
@ARGV按照参数的顺序存放,-i,-o等以及相应的参数都看作一个参数存放在@ARGV中,可以通过while语句来逐个判断参数。
使用方法为:
perl
open(ONE,"$ARGV[0]") or die $!;
open(TWO,"$ARGV[1]") or die $!
方法二:perl 模块 Getopt和vars来接收从命令行传递的参数,自动解析分配在qw里的变量里,可以不用按顺序输入
use Getopt::Std;
use vars qw($opt_i $opt_o);
getopts('i:o:');
my $infile=$opt_i if $opt_i;
my $outfile=$opt_o if $opt_o;
open(OUT,'>$outfile')||die "cann't create $outfile:$!\n";
open(IN,$infile)||die "cann't open file $infile:$!\n";
Getopt::Std模块的功能:
初始化perl命令行中所接受的参数,简化了命令行参数的解析。
例子:
#!/usr/bin/perl -w
use strict;
use Getopt::Std;
use vars qw($opt_a $opt_b $opt_c);
getopts('d:f:p:');
print "\$opt_a =>; $opt_a\n" if $opt_a;
print "\$opt_b =>; $opt_b\n" if $opt_b;
print "\$opt_c =>; $opt_c\n" if $opt_c;
输出如下:
[root@mail test]# ./getopt.pl -a aa -b bb -c cc
$opt_a =>; aa
$opt_b =>; bb
$opt_c =>; cc
说明:
vars 是一个Perl的pragma,用来预定义全局变量。这些预定义后的全局变量qw()列表中的在整个Perl文件中皆可使用,即使使用了use strict也不会报警。
前一篇:linux屏幕上的内容输出到文件