美文网首页
perl | 关于一行流

perl | 关于一行流

作者: 布莱特杨 | 来源:发表于2021-08-25 10:59 被阅读0次

要不要学不学perl呢?
完全可以不学,
也完全可以黑,
但是黑要黑到点子上,
别一天天地将什么“perl将被淘汰“,”将被取代”之类的言论挂在嘴边,
并以之为高论,实则愚蠢至极。
十好几年过去了,也没见谁能取代perl。
“条条大路通罗马!”一直是perl语言奉行的宗旨。
本篇的主要目的是讨论perl中的极简主义。

这里说的极简主义,是极简化的开发,
主要是指如何写最少的代码去做一件事以达到最高的开发效率。
在perl语言的使用中,
有种写法叫“One-line”,
我先前的一些小伙伴经常称之为“一行流”,也有人叫“一刀流”。
“One-line”的效率非常高,
能够让一些看似复杂的工作用一行搞定,
可谓之为居家旅行,装逼撩骚,必备神器。
比如,统计如下文件中每个字符串的频数:

K01962
K01962
K08602
K08602
K08602
K08602
K05521
……
K00133

你可以用这句:

perl -e '%a={};while(<>){chomp;$a{$_}++;};for $k(keys %a){print "$k\t$a{$k}\n"}' ko.list > ko.stat

再比如,计算bed文件区域大小,你可以写这么一行:

$perl -e '$a=0;while(<>){chomp;@_=split /\t/,$_;$a+=abs($_[2]-$_[1])+1;}print $a, "\n";' xgen-inherited-diseases-targets.bed

再再比如,修改当前目录下所有fq文件的名字:

ls *.fastq.gz|perl -ne 'chomp;$_=~s/_L\d_\w+\.R/\.R/;print "$_\n";'

接下来,比较一下,下面三行代码的执行效果是等效的。

#提取文件test.xls中,以#为开头的行
perl -e 'while(<>){print $_ if(/^#/);}' test.xls
perl -ne 'print $_ if(/^#/);' test.xls
grep '#' test.xls

再举一个骚气的例子,统计单词列表中的词频,然后按照词频降序排列输出。

perl -e 'while(<>){chomp;$h{$_}++};for $k(sort {$h{$b}<=>$h{$a}} keys %h){print "$k\t$h{$k}\n"}' environment.list

那么,
学perl除了一行流还有啥呢?
有一句古诗说得好:“无为在歧路,儿女共沾巾!”
不要因为看到岔道而哭哭啼啼,有岔道说明有得选啊!
而且都是殊途同归的,也就是开始的那句“条条大路通罗马”。

布莱特杨
2021.8.25 10:59

相关文章

  • Chapter 1: Introduction to Perl

    一行流的由来 perl 一行流 怎样用一行流 Perl之单行命令特技Perl 命令行一句话代码 翻译+总结 Cha...

  • perl | 关于一行流

    要不要学不学perl呢?完全可以不学,也完全可以黑,但是黑要黑到点子上,别一天天地将什么“perl将被淘汰“,”将...

  • Perl 6 控制流:Control Flow

    一说到Perl 6,就得和Perl 5比较,Perl 5 在 feature 中加入了switch等方便的控制流,...

  • perl one line的示例理解

    常用参数perl -lane -e :必须携带-n:一行一行处理-l:chomp $_;print后自带\n-a:...

  • perl一行式

    寒假来了意识到自己还有很多要学的东西。我作为一个菜鸟,在平时干活的时候就发掘很多东西还没弄清楚。perl作为文本处...

  • Perl一行流快速记录work.sh

    命令行使用过程中,上一行运行的命令如何快速记录下来?Perl提倡“懒惰即美德”,可能翻译为简单实用即美德更好一些吧...

  • Perl语言的优缺点

    关于Perl的自学教程:Perl完全自学手册图文教程 (Perl,一种功能丰富的计算机程序语言,运行在超过100种...

  • Perl应用1:文件最后一行的特殊处理

    应用背景 在用perl语言生成文件时,有时会碰到需要对文件的最后一行进行特殊处理,这个时候可以利用perl语言中的...

  • 【perl模块安装】-非root权限

    关于非root权限的perl用户,很多perl模块需要下载到自己指定的目录。 方法展示: 步骤一 设置安装路径 1...

  • 关于perl读取服务器/本地路径下的图片宽高问题

    关于perl读取服务器/本地路径下的图片宽高问题 最近在写perl程序的时候发现需要读取图片的宽和高,这种...

网友评论

      本文标题:perl | 关于一行流

      本文链接:https://www.haomeiwen.com/subject/jxtbnhtx.html