前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简短的perl程序

简短的perl程序

作者头像
用户2176428
发布2022-05-11 10:48:56
4450
发布2022-05-11 10:48:56
举报
文章被收录于专栏:AstropeakAstropeak

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

代码语言:javascript
复制
find . |perl -e 'while(<>){...}'

   处理标准输入的每一行文本。'...'表示每行的处理代码。   通过动态声明一个函数,省略while,只提供每行的处理代码,可以进一步节省字节。   process_each_line.pl

代码语言:javascript
复制
#!/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->();

   命令行调用

代码语言:javascript
复制
find . |./process_each_line.pl 'print if /pl$/'

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档