微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Perl的小秘诀是什么呢?

我已经看到许多(代码高尔夫)Perl程序,即使我不能读它们(不知道Perl)我不知道你可以如何设法获得这么一点点的代码做什么需要20一些其他编程语言.

> Perl的秘诀是什么?有没有一个特殊的语法,允许你在很少的按键中执行复杂的任务?是正则表达式的组合吗?

我想学习如何编写强大而简短的程序,如你所知道的代码高尔夫挑战.什么是最好的开始的地方?我不想学习“干净”Perl – 我想写一个脚本,即使我不懂一个星期之后.

如果还有其他编程语言,我可以写更短的代码,请告诉我.

解决方法

有许多因素使得Perl对于代码打高尔夫很有好处:

>无数据输入.值可以互换使用作为字符串和数字.
>“对角线”语法.通常称为TMTOWTDI(有多种方法可以做到)
>认变量.如果没有指定参数,大多数函数将作用于$_. (几个行为
上 @_.)
>采用多个参数(如split)的函数通常具有认值
让你省略一些论据甚至全部.
>“魔术”阅读线操作符,<.
>高阶函数,如map和grep
>正则表达式集成到语法中(即不是单独的库)
>短路运算符返回测试的最后一个值.
>短路运算符可用于流量控制.

另外,没有限制(这是认的):

>您不需要声明变量.
> Barewords自动引用到字符串.
> undef变为0或“取决于上下文.

现在已经没有了,让我很清楚一点:

高尔夫是一场比赛.

希望通过perl-fu的水平,让你擅长,但以“DIETY”的名义,不要高尔夫的真实代码是非常好的.一个,这是一个可怕的浪费时间.你可以花一个小时尝试修剪几个字符.高尔夫代码是脆弱的:它几乎总是做出主要的假设,并且毫无疑问地忽略错误检查.真正的代码不能那么粗心.最后,您作为程序员的目标应该是编写清晰,可靠和可维护的代码.在编程中有一句话:总是写你的代码,好像维持它的人是一个暴力的社会主义者谁知道你住在哪里.

所以,一切手段,开始打高尔夫;但是意识到它只是在玩弄,并对待它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(&lt;&gt;){ chomp; print &quot;$_n&quot; unless
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据进行拼凑,然后将拼凑后的数据用“|”连接在一起。表格内容如下: 员工号码员工姓名职位入职日期1001张三销售1980/12/17 0:00:
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,还不能保证书写一定正确。写了个Perl脚本,可快速构造MySQL脚本语句。脚本如下:#!/usr/bin/perluse strict;m
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了一个表的数据量统计日报,主要是针对数据库中使用较频繁,数据量又较大的31张表。该日报有两个sheet组成,第一个sheet是数据填写,第二个sh
在实际生产环境中,常常需要从后台日志中截取报文,报文的形式类似于.........一个后台日志有多个报文,每个报文可由操作流水唯一确定。以前用AWK写过一个,程序如下:beginline=`awk &
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让人领略到perl正则表达式的强大,程序如下:#!/usr/bin/perluse strict;my (%hash,%hash1,@arra
忍不住在 PerlChina 邮件列表中盘点了一下 Perl 里的 Web 应用框架(巧的是 PerlBuzz 最近也有一篇相关的讨论帖),于是乎,决定在我自己的 blog 上也贴一下 :) 原生 CGI/FastCGI 的 web app 对于较小的应用非常合适,但稍复杂一些就有些痛苦,但运行效率是最高的 ;) 如果是自己用 Perl 开发高性能的站,多推荐之。 Catalyst, CGI::A
bless有两个参数:对象的引用、类的名称。 类的名称是一个字符串,代表了类的类型信息,这是理解bless的关键。 所谓bless就是把 类型信息 赋予 实例变量。 程序包括5个文件: person.pm :实现了person类 dog.pm :实现了dog类 bless.pl : 正确的使用bless bless.wrong.pl : 错误的使用bless bless.cc : 使用C++语言实
gb2312转Utf的方法: use Encode; my $str = "中文"; $str_cnsoftware = encode("utf-8", decode("gb2312", $str));   Utf转 gb2312的方法: use Encode; my $str = "utf8中文"; $str_cnsoftware = encode("gb2312", decode("utf-8
  perl 计算硬盘利用率, 以%来查看硬盘资源是否存在IO消耗cpu资源情况; 部份代码参考了iostat源码;     #!/usr/bin/perl use Time::HiRes qw(gettimeofday); use POSIX; $SLEEPTIME=3; sub getDiskUtl() { $clock_ticks = POSIX::sysconf( &POSIX::_SC_