简短的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行),然后再调用这个函数(最后一行)。
  可继续扩充这个文件,加入一些常用函数,供在命令行上直接调用。

时间: 2024-11-01 20:56:52

简短的perl程序的相关文章

第二章 做一个简短的C++程序

第二章 做一个简短的C++程序 2.  输出语句的使用 endl要调用flush函数刷新缓冲区,而\n不需要调用 4.iostream与iostream.h的区别 5.  重名问题 释放命名空间的两种方法(1.所有 2局部) using namespace std; using std::endl; 本章总结: 1 //#include<iostream.h> 2 #include<iostream> //标准输入输出流,包含于std中,包含了cin.cout等关键字 3 usin

perl程序执行时的命令行参数

perl命令行参数默认存储在perl自定义变量@ARGV中.#判断参数个数是否为0,根据上下文环境这里就是==符号,这里@ARGV指的是命令行参数数组元素个数if(@ARGV == 0)# 这里@ARGV指的是命令行参数数组,对数据元素遍历,打印出每个元素,这里的$_为foreach的默认自增变量foreach(@ARGV){ print "$_\n";}# $#ARGV表示@ARGV数组的最后一个元素的下标,该语句同样打印出数组中的每个元素,$ARGV[0]表示@ARGV数组的第0个

一个简单的perl程序

和朋友聊天,说perl的神奇,最主要的是一行代码搞定所有. 想想用python3写的测试脚本,觉得还是有点多的,真的用几行代码写一个测试脚本,可以节约不少时间. 当然,网上黑perl的还是很多,不过自用嘛,要的是快,可以几分钟搞定的就不必再花几小时去折腾了. 老规矩,先找一个乘手的工具,Padre是一个不错的工具,简单实用,最关键是官方提供,免费. 下载的地址:http://padre.perlide.org/download.html,不过看起来需要vpn才行,国内提供相应安装包的下载. 先来

Perl &amp; LWP (第一章) [转]

LWP(Library for World Wide Web in Perl的缩写,意为Perl网络库)是一组Perl的模块和面向对象的类,用以从网站获取数据及从HTML文档中抽取信息.本章将提供LWP组合的主要 背景:描述LWP的特性和历史.运行在哪些平台以及如何下载安装.本章以展示几个LWP程序常见任务的快速演练来结束,诸如获取网页.用规则表达式抽取信 息还有提交表单等. 1.1以网站作为数据资源   大多数站点是为人而建的,用户界面的牛人们为创建在所有浏览器上都很易用且正常显示的HTML代

Perl语言入门(中文版)(第6版) 东南大学出版社

第一章简介 问题与答案 这本书适合你吗? 为何有这么多的脚注? 关于习题和解答? 习题前标的数字是什么意思? 如果我是Perl讲师? “Perl”这个词表示什么意思? Larry为什么要创造Perl? Larry干吗不用其他语言? Perl算容易,还是算难? Perl怎么会这么流行? 现在的Perl发展得怎么样了? 哪些事情最适合用Perl来做? 哪些事情不适合用Perl来做? 如何取得Perl? CPAN是什么? 如何得到Perl的技术支持? 还有别的技术支持方式吗? 如果发现Perl有bug

初识Perl

Perl 是 Practical Extraction and Report Language的缩写,它是由Larry Wall设计的,并由他不断更新和维护. Perl 是解释运行的.一般Perl程序的第一行需注明自己是个Perl程序而不是shell程序 . 一般将下面的一行作为文件的第一行 #!/usr/bin/perl 可以在终端敲入 prel -v 查看是否有安装prel . whereis prel则可以查看prel运行路径. 第一个Perl示例程序. #!/usr/bin/perl #

perl学习 之:my local our

范围声明 和全局声明类似,词法范围声明也是在编译时起作用的.和全局声明不同的是,词法范围声明的作用范围是从声明开始到闭合范围的最里层(块,文件,或者 eval--以先到者为准).这也是为什么我们称它为词法范围,尽管"文本范围"可能更准确些,因为词法范围这个词实在和词法没什么关系.但是全世界的计算机科学家都知道"词法范围"是什么意思,所以在这里我们还是用这个词. Perl 还支持动态范围声明.动态范围同样也伸展到最里层的闭合块,但是这里的"闭合"是

给程序设计师的笑话

1.程式設計師給系統工程師:"這個專案無法完成,它必須要大幅度更改規格,而我們團隊中沒有人了解關於這個程式的規格,也沒有人懂得這個應用程式使用的語言.依我個人的看法,公司絕對不該接下這個專案." 系統工程師給組長:"這個專案需要規格的更改,目前我們的工作人員缺乏此種經驗,使用的語言也還不熟悉,若要接下,則必須接受適當的研習.依我個人的看法,我們還沒有十足的準備接下這個專案." 組長給專案經理:"這個專案必須在系統內更改規格,而我們對此種案件還沒有十足的相關

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

巡检类工作经常会出具日报,最近在原有日报的基础上又新增了一个表的数据量统计日报,主要是针对数据库中使用较频繁,数据量又较大的31张表.该日报有两个sheet组成,第一个sheet是数据填写,第二个sheet则是基于第一个sheet的数据进行的文字描述和图表展示. 文字描述主要包括两部分:一.呈现该31张表中数据量最大的9张表.呈现结果类似于:emp(约14万),dept(约100万)...当然,这个只是举例,为了避免引起不必要的麻烦(主要是企业信息安全方面的考虑),我这里不可能将具体日报的内容贴