`

perl接受传递参数的几种方法

    博客分类:
  • Perl
阅读更多
1.使用一个参数读取shell传递来的多个参数:
目录下:

a.log
b.log
c.log
dota.pl

dota.pl的内容如下:
#! /usr/bin/perl

use Getopt::Std;
use warnings;
use strict;

sub read_from_sh($) {
    my $file = shift;
    my @files = ();
    open F, $file or die "Could not open $file: $!";
    while (<F>) {
next if /^\s*$/;
push @files, $_;
    }
    close F or die "Could not close $file: $!";
    return @files;
}

my @files;
my %opts = ();
getopts("s:", \%opts);
if ($opts{'s'}) {
    @files = read_from_sh($opts{'s'});
}else {
    @files = @ARGV;
}
for my $file (@files) {
print "file: $file\n";
}

运行的shell如下:
find -name '*log' |  /usr/bin/perl dota.pl -s -

结果如下:
file:a.log
file:b.log
file:c.log

或者直接塞给perl:/usr/bin/perl dota.pl a.log b.log
结果同上

2.向perl程序传递多个参数:
#!/usr/bin/perl -w
use strict;
use Getopt::Std;
use vars qw($opt_a $opt_b $opt_c);
getopts('a:b:c:');
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;

/usr/bin/perl p1.pl -a aa -b bb -c cc
0
0
分享到:
评论

相关推荐

    PERL编程24学时教程.pdf

    16.1 Perl究竟是一种什么语言 183 16.1.1 Perl的简单发展历史 183 16.1.2 开放源 184 16.1.3 Perl的开发 185 16.2 Perl综合存档文件网 185 16.2.1 什么是CPAN 186 16.2.2 为什么人们愿意提供自己的开 发成果 186 ...

    PERL编程24学时教程

    16.1 Perl究竟是一种什么语言 183 16.1.1 Perl的简单发展历史 183 16.1.2 开放源 184 16.1.3 Perl的开发 185 16.2 Perl综合存档文件网 185 16.2.1 什么是CPAN 186 16.2.2 为什么人们愿意提供自己的开 发成果 186 ...

    perl编程24学时教程.rar

    16.1 Perl究竟是一种什么语言 183 16.1.1 Perl的简单发展历史 183 16.1.2 开放源 184 16.1.3 Perl的开发 185 16.2 Perl综合存档文件网 185 16.2.1 什么是CPAN 186 16.2.2 为什么人们愿意提供自己的开 发成果...

    perl语言脚本文档说明

    16.1 Perl究竟是一种什么语言 183 16.1.1 Perl的简单发展历史 183 16.1.2 开放源 184 16.1.3 Perl的开发 185 16.2 Perl综合存档文件网 185 16.2.1 什么是CPAN 186 16.2.2 为什么人们愿意提供自己的开 发成果 ...

    Perl编程24学时教程(PDF格式,共24章)

    16.1 Perl究竟是一种什么语言 183 16.1.1 Perl的简单发展历史 183 16.1.2 开放源 184 16.1.3 Perl的开发 185 16.2 Perl综合存档文件网 185 16.2.1 什么是CPAN 186 16.2.2 为什么人们愿意提供自己的开 发成果 186 ...

    24日学好Perl语言

    16.1 Perl究竟是一种什么语言 183 16.1.1 Perl的简单发展历史 183 16.1.2 开放源 184 16.1.3 Perl的开发 185 16.2 Perl综合存档文件网 185 16.2.1 什么是CPAN 186 16.2.2 为什么人们愿意提供自己的开 发成果 186 ...

    perl学习文档

    16.1 Perl究竟是一种什么语言 183 16.1.1 Perl的简单发展历史 183 16.1.2 开放源 184 16.1.3 Perl的开发 185 16.2 Perl综合存档文件网 185 16.2.1 什么是CPAN 186 16.2.2 为什么人们愿意提供自己的开 发成果 186 ...

    Linux高级bash编程

    使用getopts命令来读取传递给脚本的选项/参数. 11-20. "Including"一个数据文件 11-21. 一个没什么用的,source自身的脚本 11-22. exec的效果 11-23. 一个exec自身的脚本 11-24. 在继续处理之前,等待一个进程的结束 ...

    Advanced Bash-Scripting Guide <>

    33.3. 测试和比较: 另一种方法 33.4. 递归 33.5. 彩色脚本 33.6. 优化 33.7. 各种小技巧 33.8. 安全话题 33.8.1. 被感染的脚本 33.8.2. 隐藏Shell 脚本源码 33.9. 移植话题 33.10. 在Windows 下进行Shell 编程 34. ...

    外文翻译 stus MVC

    Of course, we could use Java (or PERL, C/C++ or what ever) code to generate HTML. There are several disadvantages to that approach: • Java programmers should develop services, not HTML. • Changes...

    正则表达式

    在正则表达式中括号具有几种作用.它的主要作用是把单独的项目分组 成子表达式,以便可以像处理一个独立的单元那种用 *、+或? 来处理那些项目.例如: /java(script) ?/ 匹配的是字符串 "java",其后既可以有 "script",...

    PHP3程序设计

    4.3.2 向函数传递参数 58 4.3.3 给函数赋予缺省值 59 4.3.4 控制变量的作用域 60 4.3.5 嵌套函数调用 61 4.3.6 递归函数 61 4.4 总结 65 第5章 中场一:数据库连接 67 5.1 开端 67 5.2 创建连接 67 5.3 获取HTML表单...

    matlab有些代码不运行-224d-project:图像cnn+带GRU的文本rnn以生成可感知情绪的文本

    最近在一篇文章中介绍了这方面的工作,并且在过去几个月中,该领域一直是研究界发表的多篇学术论文的主题。 该代码当前实现和提出的模型。 两种模型均拍摄图像并使用递归神经网络(LSTM或RNN)预测其句子描述。 概述...

    freemarker总结

    5、 方法:通过传递的参数进行计算,以新对象返回结果 方法变量通常是基于给出的参数计算值在数据模型中定义。 6、 用户自定义FTL指令:宏和变换器 7、 节点 节点变量表示为树型结构中的一个节点,通常在XML...

    C#微软培训资料

    11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 12.2 属 性 .143 12.3 小 结 .146 第十三...

    操作系统(内存管理)

    然后,当通过 free() 将该指针传递回来时,我们只需要倒退几个内存字节就可以再次找到这个结构。 在讨论分配内存之前,我们将先讨论释放,因为它更简单。为了释放内存,我们必须要做的惟一一件事情就是,获得我们...

    内存管理内存管理内存管理

    让我们来了解可用于内存管理的不同方法,它们的好处与不足,以及它们最适用的情形。 C 风格的内存分配程序 C 编程语言提供了两个函数来满足我们的三个需求: malloc:该函数分配给定的字节数,并返回一个指向...

Global site tag (gtag.js) - Google Analytics