简短的perl程序能够实现大功能。
 
  perl是如何做到的呢?
  1. 默认变量
     如果没有向函数提供参数值,则默认参数为$_;
     如果没有变量用于接收一个表达式的值,则默认接收变量为$_。
     perl语言每条语句可像管道那样运行,通过默认变量$_串接起来。
  2. 特殊语法
     利用一些正常情况下没有含义的语法,如while(<>){}.
     如果按照正常的语法,这个定法的意义是:读取一行文本,然后丢弃。
     由于正常情况下没有人会这么用,perl语言将这一语法利用起来了。在实际中写起来非常方便。
  3. 变量值不用给定初值,不用提前声明
     perl会自动为变量选择合适的初值,如果没有给定的话。
     对于数值,初值为0;对于字符串,初值为““,也就是空字符串。
  4. 对于一些常用语法的简洁写法
     如通过qw定义一个字符串list,可避免写引号。
     
  简短的好处?
  简短,再加上perl与shell结合非常好,可以在命令行上直接写出简短又功能强大的代码。
  一个常用用法:

find . |perl -e 'while(<>){...}'

处理标准输入的每一行文本。'...'表示每行的处理代码。

通过动态声明一个函数,省略while,只提供每行的处理代码,可以进一步节省字节。
  process_each_line.pl

  #!/usr/bin/perl
my $cmd=$ARGV[0];
my $func = eval "sub{while(<STDIN>){chomp;$cmd;}}";
die "unable to compile '$cmd', aborting...\n" if not defined $func;
$func->();

命令行调用

  find . |./process_each_line.pl 'print if /pl$/'

打印出当前目录下所有以pl结尾的文件名。
  process_each_line.pl 会生成一个函数 sub{while (<STDIN>){chomp; print if /pl$/;}}(第3行),然后再调用这个函数(最后一行)。
  可继续扩充这个文件,加入一些常用函数,供在命令行上直接调用。

简短的perl程序的更多相关文章

  1. 一个简单的perl程序

    和朋友聊天,说perl的神奇,最主要的是一行代码搞定所有. 想想用python3写的测试脚本,觉得还是有点多的,真的用几行代码写一个测试脚本,可以节约不少时间. 当然,网上黑perl的还是很多,不过自 ...

  2. Perl中的替换(七)

    在Perl中使用s///进行替换操作,与m//进行查找操作类似. s/with (\w+)/against $1's team/;      ##第一个双斜线,表示被替代的文本.第二个双斜线,表示将替 ...

  3. Chapter 1. Hello, Perl/Tk

    Chapter 1. Hello, Perl/Tk 内容: Perl/Tk Concepts Some Perl/Tk History Getting Started with Perl/Tk Hel ...

  4. 精通Perl(第2版)

    精通Perl(第2版)(通往Perl大师之路必读经典书籍,体现了一种编程思维,能够帮你解决很多实际的问题) [美]brian d foy(布瑞恩·D·福瓦)著   王兴宇 刘宸宇 译 ISBN 978 ...

  5. perl学习之路3

    Perl编程之路3 标签: perl 列表与数组   Perl里面代表复数的就是列表和数组 列表(list)指的是标量的有序集合, 而数组(array)则是存储列表的变量. 在Perl这两个属于尝尝混 ...

  6. perl学习之路2

    这些主要是从 "小骆驼" 书上粘贴或者摘抄出来的, 个人认为需要记的语法知识 "在某些情况下, 你可能需要在一台机器上写程序, 再传送到另一台机器上运行.这时候, 请使用 ...

  7. 如何用Perl对Excel的数据进行提取并分析

    巡检类工作经常会出具日报,最近在原有日报的基础上又新增了一个表的数据量统计日报,主要是针对数据库中使用较频繁,数据量又较大的31张表.该日报有两个sheet组成,第一个sheet是数据填写,第二个sh ...

  8. Perl语言——简单说明

    Perl语言——简单说明 一.简单说明 Perl语言全称:实用摘录与报表语言|病态折中式垃圾列表器.Perl名称并不是缩写词,而是个溯写字. Perl语言历史:Larry Wall(拉里·沃尔)20世 ...

  9. perl基本语法--转载

    http://www.cnblogs.com/zhtxwd/archive/2012/03/06/2381585.html 本文介绍从变量类型.操作运算符.控制叙述.子程序.I/O和档案处理. Reg ...

随机推荐

  1. 阻塞IO 非阻塞IO 异步IO

    阻塞IO 一般表现为 进程/线程 调用IO操作后就一直死循环等待,直至IO操作结束,返回IO结果 非阻塞IO 一般表现为 进程/线程 调用IO操作后,可以先去干别的事情,但是每隔一段时间,回去询问一下 ...

  2. linux执行run文件显示cannot execute binary file

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  3. selector模块

    selector selectors模块,此模块允许高级和高效的I / O多路复用,构建在select模块原语上.鼓励用户使用此模块,除非他们需要精确控制所使用的操作系统级原语.( 默认使用epoll ...

  4. [转]C#读写远程共享文件夹

    1.在服务器设置一个共享文件夹,在这里我的服务器ip地址是10.200.8.73,共享文件夹名字是share,访问权限,用户名是administrator,密码是11111111. 2.新建一个控制台 ...

  5. knockout 学习使用笔记-----event绑定传参ko属性

    在绑定event的时候,需要传入ViewModal 本身的属性值(其实没必要,js直接能获取到,此处为测试相关参数的传递),如果不加(),会将绑定的function传进event(至于为嘛传了个fun ...

  6. s5_day11作业

    # 1 文件内容如下,标题为:姓名,性别,年纪,薪资 # # egon male 18 3000 # alex male 38 30000 # wupeiqi female 28 20000 # yu ...

  7. springmvc国际化资源文件

    spring配置文件中添加 <!-- 配置国际化资源文件 --> <bean id="messageSource" class="org.springf ...

  8. kafka--producer配置解析

    producer解析 主要是解析一下producer的相关配置以及一些使用场景 相关解析 名称   说明 类型 默认值 有效值 重要性 bootstrap.servers 用于建立与kafka集群连接 ...

  9. 集合遍历(Set,List,Map)

    一.Set遍历 定义一个set Set<String> books = new HashSet<String>(); books.add("Java"); ...

  10. INFO hdfs.DFSClient: Exception in createBlockOutputStream java.net解决办法

    自己安装好Hadoop2.7.x之后,发现dfs中的/bin/hadoop fs -put命令不能够使用,报错如下: [hadoop@master bin]$ ./hadoop fs -put ../ ...