只有一行的Perl程序第1/3页_应用技巧

1 line perl
今天来说说perl,只有一行的perl程序。
各种编程语言中perl是以变态的古灵精怪而闻名的,比如我,就经常写出自己都看不懂的perl程序来。
比如这篇文档中的程序,虽然短小,估计一个星期之后我看这就要头晕了。但这丝毫不影响perl作为 一个功能强大的系统管理工具和系统控制语言的存在和推广,而且灵活性恰恰是它最大的优势,你可以
这样写,也可以那样写,“或者,绝招同途异路。”
1. hello world!
===========================================================
还是从最经典的 hello,world! 开始......
##
# perl -e 'print "hello,world!\n"'
hello,world!
##
完全不出意料,他没有任何歧异的终于我们愿意的输出了"hello,world!",自然得就像我么用echo或
printf()一样。
这个程序按照传统形态展开的话是这样:
==
#!/usr/bin/perl
print "hello,world!\n";
==
我们在命令行上使用了perl 的-e参数,这将使perl把-e之后直接跟着的字符串当作perl的程序自动内置
展开执行,免去了我们用vi或cat重写文件之苦。
-e参数的功能,就是自动把之后的字符串作为程序主题执行,再之后的参数将作为perl脚本的命令行
参数($ARGC 和 @ARGV)传递给程序语句。
2. 我要cat。
===========================================================
hello,world!看似完全没有作用,其实我们可以丰富它,用它来完成任何工作--只要你的想象力够丰富。
perl世界里很有名的一个项目就是ppt( pOWER pERL tOOLS),用纯perl重新实现了所有unix常用命令。
我们来看一个最简单的cat。
##
# perl -pe 1 /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.0.3 vi
##
就如同cat一样,这行命令原样的输出了/etc/hosts文件。我们来看看它实际做了些什么:
==
#!/usr/bin/perl
for(@ARGV){
open($F,$_);
while(<>){
&调用执行-e参数指定的指令
&本例中为1
return 1;
}
}
==
这里解释一下涉及到的第二个perl命令行参数-p,-p的过程实际就是自动为我们提供了一个如上面源代码
中所见的双层循环,第一层是依次读取命令行上指定的文件名,作为@ARGV ,打开文件并进行处理;
第二层循环则从open($ARGV[*])接收文件句柄,并执行一个perl的<>操作,一次读取文件的每一行,
并进行处理,处理的过程就是我们使用-e指定的程序语句。 如果没有指定程序语句,那么默认的情况
将是读取并回显每一行。
所以这个程序的流程如下:
1, 循环,依次读取@ARGV 中指定的若干文件;
2, 打开当前文件;
3, 循环,依次使用<>操作符读取每一行,并存储在临时变量$_ ;
4, 调用-e的程序语句进行处理; 在本例中,-e只有1一个参数,在perl中代表 retuen 1,直接返回真值
不作处理。
再写两条有用的命令:
# perl -pe 'exit if $. > 10' FILENAME
这条相当于unix命令head,打印指定文件的前10行 -- 你可以把10改成你想要的任何数字;
# perl -e '@lines = <>; print @lines[$#lines-10 .. $#lines]' FILENAME
这条相当于unix命令tail,打印指定文件的最后10行 -- 同样你也可以修改成你想要的。
3. kick sed。

当前1/3页 123下一页阅读全文

时间: 2024-10-12 10:47:04

只有一行的Perl程序第1/3页_应用技巧的相关文章

asp下的一个很简单的验证码程序第1/3页_应用技巧

主程序共三个  我的调用方式 <script language="javascript" src="/verify/num.asp"></script>  验证方式 if trim(Loginnum)<>trim(session("Loginnum")) then  Response.Write Error("验证码错误!")  Response.End  end if  num.asp 

Perl Mysql数据库操作实现代码_应用技巧

一. 安装DBI模块 步骤1: 从TOOLS栏目中下载DBI.zip,下载完后用winzip解开到一个temp目录,共有三个文件: Readme DBI.ppd DBI.tar.gz 步骤2: 在DOS窗口下,temp目录中运行下面的DOS命令: ppm install DBI.ppd 如果提示无效命令,可在perl/bin目录下运行 二. 安装DBD-Mysql模块 从软件下载中下载DBD-Mysql.zip,安装方法同一. 三. 准备数据库 启动mysql,首先创建一个数据库mydata,然

Web.config(应用程序的配置信息)总结_实用技巧

Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中.当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置.如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件.它可以提供除从父目录继承的配置信息以外的配置信息,也可以重

perl脚本学习指南--读书笔记_应用技巧

undef 默认未定义字符,perl里面没有NULL,defined($x)函数:如果参数为undef返回false qw(cs phy geo) 类似于 ("cs", "phy", "geo")列表可以赋值给数组@array 数组操作符:pop,push操作末尾,shift,unshift操作开头,reverse逆序,@array = sort @array; foreach @array{print $_;}打印数组:$_是一个很强大的默认变

[Perl]文字/代码批量替换工具_应用技巧

Perl脚本batchReplace.pl可以用来批量替换文件中的文字/代码.可在指定目录中查找指定类型的文件,并递归检查子目录:在输出文件时复制输入文件的目录结构. [附件]Win32应用程序batchReplace.exe是由Perl脚本编译产生的可执行程序,不需安装Perl运行环境即可执行. 在命令行中使用 batchReplace.exe[ -i 输入文件路径(或包含文件的目录)][ -o 输出文件位置(文件或目录)][ -c 批量输入文件的扩展名,以"."开始,多个扩展名之间

网站程序员如何应对web标准第1/2页_相关技巧

作者:jxdawei jxdawei的blog:http://www.iwcn.net/ 本文讨论的是在web标准普及的形势下,网站程序员的定位以及如何与设计师配合开发符合web标准的网站项目.本文适合的读者是传统TABLE布局下分工不是非常明晰的程序员. 1:学习web标准,让你的工作变得更加简单. web标准是大势所趋,所以作为网站程序员.你必须洗脑,必须去学习web标准.去重新认识html标签,去了解如何让程序输出页面需要的代码. 比如: 上边是美工出来的效果图,下边是符合标准的程序代码:

全面优化ASP应用程序的性能的方法_应用技巧

                                          ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了.虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情.  现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了.那就跟随我来一同加速你的ASP程序吧!  一. 有关

ASP.NET Web应用程序的安全解决方案浅析_实用技巧

一.ASP.NET Web应用程序架构安全隐患 1. 对于程序集主要威胁:未验证的访问.反向工程.代码注入.通过异常获得程序信息.未审核访问. 2. 客户端与Web应用程序之间的安全隐患:代码注入(跨站点脚本或缓冲区溢出攻击).网络监控(密码和敏感应用程序数据探测).参数破解(表单字段.查询字符串.Cookie.视图状态.HTTP头信息).会话状态变量ID取得.信息获取(通常使用异常). 3. Web应用程序客户端与企业服务之间的安全隐患:非审核访问.破解配置数据.网络监视.未约束代理.数据复制

ASP.NET 计划任务实现方法(不使用外接程序,.net内部机制实现)_实用技巧

以下讲解步骤: 1. 在Global.asax 文件中作如下修改 复制代码 代码如下: void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 //定义定时器 //1000表示1秒的意思 System.Timers.Timer myTimer = new System.Timers.Timer(1000); //TaskAction.SetContent 表示要调用的方法 myTimer.Elapsed += n