加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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也不会报警。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有