简短的perl程序
简短的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程序的更多相关文章
- 一个简单的perl程序
和朋友聊天,说perl的神奇,最主要的是一行代码搞定所有. 想想用python3写的测试脚本,觉得还是有点多的,真的用几行代码写一个测试脚本,可以节约不少时间. 当然,网上黑perl的还是很多,不过自 ...
- Perl中的替换(七)
在Perl中使用s///进行替换操作,与m//进行查找操作类似. s/with (\w+)/against $1's team/; ##第一个双斜线,表示被替代的文本.第二个双斜线,表示将替 ...
- Chapter 1. Hello, Perl/Tk
Chapter 1. Hello, Perl/Tk 内容: Perl/Tk Concepts Some Perl/Tk History Getting Started with Perl/Tk Hel ...
- 精通Perl(第2版)
精通Perl(第2版)(通往Perl大师之路必读经典书籍,体现了一种编程思维,能够帮你解决很多实际的问题) [美]brian d foy(布瑞恩·D·福瓦)著 王兴宇 刘宸宇 译 ISBN 978 ...
- perl学习之路3
Perl编程之路3 标签: perl 列表与数组 Perl里面代表复数的就是列表和数组 列表(list)指的是标量的有序集合, 而数组(array)则是存储列表的变量. 在Perl这两个属于尝尝混 ...
- perl学习之路2
这些主要是从 "小骆驼" 书上粘贴或者摘抄出来的, 个人认为需要记的语法知识 "在某些情况下, 你可能需要在一台机器上写程序, 再传送到另一台机器上运行.这时候, 请使用 ...
- 如何用Perl对Excel的数据进行提取并分析
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了一个表的数据量统计日报,主要是针对数据库中使用较频繁,数据量又较大的31张表.该日报有两个sheet组成,第一个sheet是数据填写,第二个sh ...
- Perl语言——简单说明
Perl语言——简单说明 一.简单说明 Perl语言全称:实用摘录与报表语言|病态折中式垃圾列表器.Perl名称并不是缩写词,而是个溯写字. Perl语言历史:Larry Wall(拉里·沃尔)20世 ...
- perl基本语法--转载
http://www.cnblogs.com/zhtxwd/archive/2012/03/06/2381585.html 本文介绍从变量类型.操作运算符.控制叙述.子程序.I/O和档案处理. Reg ...
随机推荐
- settings配置与model优化
settings配置与model优化 settings: 项目基本配置(settings.py, models.py, admin.py, templates...).数据库操作.中间件 http: ...
- 7.Insert Methods-官方文档摘录
总结 列举insert插入方法 MongoDB provides the following methods for inserting documents into a collection: db ...
- Django的model模型
一:字段选项 1,null =True 表示数据库的中可以存为null 默认值是False 2,blank=True 表示字段可以为空 默认值是False 3,chioces 由二项元组构成的一 ...
- sql server中index的REBUILD和REORGANIZE的区别及工作方式
sql server中index的REBUILD和REORGANIZE 转自:https://www.cnblogs.com/flysun0311/archive/2013/12/05/3459451 ...
- 分页和Cookie、Session
分页和Cookie.Session 分页 自定义分页 函数班 from django.shortcuts import render # Create your views here. data = ...
- tmux命令
tmux 新建一个会话,进入tmux tmux new -s 'main' 新建一个会话'main',进入tmux' tmux a -t 'main' 进入tmux会话'main' exit 退出当前 ...
- 什么是JIT?
JIT是just in time,即时编译技术.使用该技术,能够加速java程序的执行速度.下面,就对该技术做个简单的讲解. 首先,我们大家都知道,通常javac将程序源代码编译,转换成java字节码 ...
- 在Ubuntu上安装Brackets的步骤(加源和移除源)
学习编写接口开发和测试时需要用到编写HTML页面,在Windows下采用的是HBuilder,但是无Ubuntu版本.安装一个网上推荐的Brackets 安装步骤:参见http://www.xiton ...
- WPF使用Expression Design设计图形
1.将画好的图形通过菜单导出成WPF xaml格式. 2.导出的文件就可以直接在WPF程序中使用了. 这里导出的DrawingBrush, <?xml version="1.0&quo ...
- OpenGL中的Shader
http://blog.csdn.net/huangcanjun187/article/details/52474365 学习总结自:http://learnopengl.com/#!Getting- ...