不知道有人转贴过无
http://www.wgaky.com/index.php/archives/41

[原创]Perl One Line By Example
Perl常用命令行参数概览
-e 指定字符串以作为脚本(多个字符串迭加)执行
-M/-m 和 use 模块名 一样. 如果不想引入模块的缺省值, 你可以使用 -m. -m模块名 和 use 模块名() 一样.
-I 指定目录以搜索标准位置前的模块
-w 打开警告
-c 进行语法检查但并不执行程序。
-0 (这是个零)跟一个16 进制或8进制数值,指定输入记录分隔符
-l (这个是L)跟一个16 进制或8进制数值,指定输出记录分隔符
-a 打开自动分离 (split) 模式. 空格是缺省的分离号. 输入根据分离号被分离然后放入缺省数组 @F.
-F 指定分割符 -a 使用的模式
-i 在适当的位置编辑文件
-n 使用 <> 将所有 @ARGV 参数当作文件来逐个运行
-p 和 -n 一样,但是还会打印 $_ 的内容
-00 打开段落模式
-0777 打开slurp 模式 (即可以一次把整个文件读入) , 这与把 $/ 设为空字符和 undef 一样效果.
-l 单独使用,有两个效果, 第一自动 chomp 输入分隔号, 第二 把$/ 值付给 $\ ( 这样 print 的时候就会自动在末尾加 \n )
好的,上边我们给出了perl one line 中最常用的几个参数,看完之后你可能一头雾水,不过没关系,接下来我们会逐一用示例代码演示如果使用这个参数来使你的日常工作变得更轻松。在文末的附录中我将给出一个详细的参数列表和相关的环境变量列表以供参考。
-c
这个参数编译 Perl 程序但不会真正运行它. 由此检查所有语法错误.事实上,它会执行任何BEGIN或CHECK块以及任何use指示字。
示例:
[32 michael@09:44:17 ~]$ perl -c pr/Perl/Code/gupiao.pl
pr/Perl/Code/gupiao.pl syntax OK
-w
打开警告,报告任何潜在的问题。例如只提到到过一次的变量,子例程的重定义等。
示例:
[33 michael@10:17:16 ~]$ perl -w -e’print $foo’
Name “main::foo” used only once: possible typo at -e line 1.
Use of uninitialized value in print at -e line 1.
-e
用于输入一行或多行脚本。如果使用了-e,Perl将不会在参数列表中寻找程序的文件名。
例如:
[34 michael@10:17:17 ~]$ perl -e’print “Hello world!\n”‘
Hello world! <—你的perl one line的hello world诞生了。
-M/-m
用于导入模块。就像执行use那样。如果你指定的是-MODULE,而不是MODULE,那么它将执行no。例如,-Mstrict类似use strict;而-M-strict类似no strict。
示例:
[38 michael@10:29:03 ~]$ perl -MLWP::Simple -e ‘print head “http://www.sina.con.cn”;print “\n”‘
text/html615Microsoft-IIS/6.0
-m和-M 通过=来引入某个模块的特别函数.
示例:
[48 michael@10:41:40 ~]$ perl -MCGI=:standard -e ‘print header’
Content-Type: text/html; charset=ISO-8859-1
事实上当你使用-Mmodule=’foo,bar’时,你实际上是在说-M’module qw(foo bar)’
示例:
[49 michael@10:42:37 ~]$ perl -MCGI=’header,start_html’ -e ‘print header, start_html’
Content-Type: text/html; charset=ISO-8859-1<!DOCTYPE html
PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” lang=”en-US” xml:lang=”en-US”>
<head>
<title>Untitled Document</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
</head>
<body>
-n/-p
增加了循环的功能, 使你可以一行一行来处理文件.
-n实际上相当于如下的perl代码段:
LINE:
while (<>;) {
# your code goes here
}
而-p相当于:
LINE:
while (<>;) {
# your code goes here
} continue {
print or die “-p destination: $!\n”;
}
正如你在等价代码中看到的,使用-p时,每一行都会被打印出来。
示例:
[52 michael@10:52:42 ~]$ perl -ne’print “$.—$_”‘ pr/C/helloword.c <—正如你在结果中看到的,它将输出每一行的行号与该行内容。
1—#include<stdio.h>
2—
3—int main(void)
4—{
5— printf(“Hello world!\n”);
6— return 0;
7—}
示例:
[140 michael@12:57:07 ~]$ perl -ne ‘print if 30 .. 35′ pr/Perl/Code/gupiao.pl <–打印指定文件中的30到35行
if($infot eq “op”){$op=$infoc}
if($infot eq “hi”){$hi=$infoc}
if($infot eq “lo”){$lo=$infoc}
if($infot eq “cp”){$cp=$infoc}
if($infot eq “lname”){$lname=$infoc}
if ($infot eq “type”)
注意到那个 LINE: 标签了么?我们可以利用它来跳到下一个循环. 使用 next LINE
示例:
[53 michael@10:53:49 ~]$ perl -ne’next LINE unless /main/;print “$.—$_”‘ pr/C/helloword.c
3—int main(void)
如果想在循环的前后做些处理, 可以使用 BEGIN 或 END block.
示例:
[57 michael@10:58:39 ~]$ perl -ne ‘END { print “$t\n” } @w = split; $t += @w’ pr/C/helloword.c
9 <—在END中输出该文件中的字数。
-a
打开自动分割模式,不过只有在和-p/-n一起使用时才有效。在-n/-p开关生成的while循环中首先对@F数组进行一次隐含的split调用。空格是缺省的分离号. 输入根据分离号被分离然后放入缺省数组 @F. 因此,前一个统计字数的代码可以更简单的写成如下模式:
[58 michael@11:04:26 ~]$ perl -ane ‘END {print “$x\n”} $x += @F’ pr/C/helloword.c
9
-F
指定通过-a开关(否则没有作用)自动split时使用的分割符。比如,当我们处理/etc/passwd文件时,分割符为:
示例:
[63 michael@11:10:25 ~]$ perl -F: -ane ‘print if $F[6] && $F[6] =~ m(^/bin/bash$)’ /etc/passwd
root:x:0:0:root:/root:/bin/bash
michael:x:500:500::/home/michael:/bin/bash
nagios:x:501:501::/home/nagios:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
-0
把记录分割符($/)指定为一个八进制数字。如果没有提供,那么NUL字符就是分割符。-00允许Perl以段落模式打开文件。-0777打开slurp 模式 (即可以一次把整个文件读入) , 这与把 $/ 设为空字符和 undef 一样效果.如果要处理的文件很大的话,不建议这么做,因为一次性将文件读入内存会占用大量内存空间。
-l
打开自动行结束处理,它有两个效果:首先,如果和-n/-p一起使用,自动chomp行终止符,其次,它把$\设置为紧随-l参数厚的一个八进制数代表的字符,如果省略,-l就把$\设置为$/的当前值,通常为换行符。
示例:
[65 michael@12:23:04 ~]$ perl -le’print “Hello world!”‘
Hello world!
看到了?我们不用每次再在print之后附上一个\n,很不错的选择,不是么?
-i
-i 把源文件更名然后从这个更名的源文件里读取.最后把处理后的数据写入源文件. 如果 -i 后跟有其他字符串, 这个字符串与源文件名合成后来生成一个新的文件名. 此文件会被用来储存原始文件以免被 -i 参数覆盖.
示例:
[124 michael@12:36:33 ~/show]$ ls
file1
[125 michael@12:36:35 ~/show]$ cat file1
PHP
[126 michael@12:36:38 ~/show]$ perl -pi -e’s/PHP/Perl/g’ file1 <–由于我们没有给-i指定字符串,因此源文件被覆盖
[127 michael@12:36:44 ~/show]$ ls
file1
[128 michael@12:36:47 ~/show]$ cat file1
Perl
示例:
[131 michael@12:38:10 ~/show]$ ls
file1
[132 michael@12:38:10 ~/show]$ cat file1
PHP
[133 michael@12:38:12 ~/show]$ perl -pi.bak -e’s/PHP/Perl/g’ file1 <—我们为-i指定了.bak,因此源文件被重命名为file1.bak
[134 michael@12:38:20 ~/show]$ ls
file1 file1.bak
[135 michael@12:38:21 ~/show]$ cat file1
Perl
[136 michael@12:38:24 ~/show]$ cat file1.bak
PHP

Tom Christiansen先生的perl1line完整列表
http://download.boulder.ibm.com/ ... ary/l-p102/tomc.txt

IBM DW上的perl1line:
功能丰富的 Perl:一行程序 101 - Perl 作为命令行实用程序
http://www.ibm.com/developerWorks/cn/linux/sdk/perl/l-p101/

功能丰富的 Perl:一行程序 102
http://www.ibm.com/developerwork ... l/l-p102/index.html

perl1ine英文注释版
http://www.catonmat.net/blog/perl-one-liners-explained-part-one/

http://www.catonmat.net/blog/perl-one-liners-explained-part-two/

http://www.catonmat.net/blog/perl-one-liners-explained-part-three/

perl one line相关推荐

  1. perl 命令行备注

    参考链接 Perl 常用命令行选项 unix 常用命令 perl 实现 sed awk tr nl perl 和sed,awk,tr,grep,nl等常用命令替换 sed task sed perl ...

  2. linux下perl命令行参数,Perl One-Liners | Perl命令行学习1 -e参数

    注:本内容需要点的perl编程基础,最好是读过<perl语言入门>. 本系列是自己平常学习工作中的总结,每一个实例均为我为了讲解而设置的,自己试过的,如有错误,望能见谅 Perl 命令行参 ...

  3. perl 的mail严格正则表达式到底要怎么写?

    #! /usr/bin/perl -w $line = <STDIN>; chomp($line); if($line =~ /(^[a-zA-Z1-9]{1}\w*(\-{0,1}\w{ ...

  4. [Perl工具篇] 安装Strawberry Perl与第一个Perl程序(Padre下)

    原文地址::https://blog.csdn.net/henjay724/article/details/8456936 相关文章 1.Perl 和 StrawberryPerl 与 ActiveP ...

  5. Perl语言开发工具(持续整理)

      Perl开发环境搭建:解释器+编辑器+调试工具     如: Strawberry Perl(解释)+Padre(编辑+调试)     如: ActivePerl(解释) + VIM(编辑)+Pe ...

  6. Perl学习教程之单行命令详解

    前言 本文主要给大家介绍了关于Perl单行命令的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 与One-Liner相关的perl参数 -a 自动分隔模式,用空格分隔$并保 ...

  7. 计算机术语shebang,如何在Windows下使用Apache 2忽略Perl shebang?

    我已经在Windows计算机上设置了本地Perl Web环境. 我正在使用的应用程序最初来自Linux服务器,因此源.pl文件的显示如下所示: #!/usr/bin/perl 这会在Windows开发 ...

  8. 【翻译】Programming Ruby——正则表达式

    正则表达式 Ruby大部分的内置类型都和其它的编程语言很相似.主要有strings,integers,floats,arrays等等.然而,只有脚本语言, 如Ruby,Perl,和awk等提供了内置表 ...

  9. Chipseq数据库的建立

    这里以小鼠为例子下载相应的注释文件,基因组版本为mm10 下载refGene.txt.gz 网址:http://hgdownload.cse.ucsc.edu/goldenPath/mm10/data ...

最新文章

  1. Microbiome:韦中组揭示根际原生动物群落是决定植物健康的关键因素
  2. mysql 分组数据_MySQL基础之分组数据
  3. 怎么将excel数据导入到datagridview中
  4. 技校毕业是什么学历_初中毕业上技校学什么专业好
  5. arduino读取水位传感器的数据显示在基于i2c的1602a上_构建Arduino的LoRa远程智能空气质量监测系统...
  6. yasm linux gcc,vs+msys2+yasm 编译libx264+ffmpeg详细解释(32位或64位)
  7. 联想YOGA 13笔记本电源适配器修理
  8. 如何提高有效工作效率
  9. 电商网站一般用什么技术开发
  10. 别以透明的名义降低人工智能的能力
  11. 我心中的计算机作文500,我心中的太阳作文500字(通用10篇)
  12. [精品教程,新老鸟必读]:极限装机、优化全攻略(新手优化教程)
  13. python如何用for循环写九九乘法表
  14. java打印ascii码_JAVA实现打印ascii码表代码
  15. 产业实践推动科技创新,京东科技集团3篇论文入选ICASSP 2021
  16. c语言话费查询系统,MTN CELL C VODACOM 8TA 指令大全
  17. -1和255有什么区别?
  18. 安搭Share|四种不同类型的“宅”你中招了吗?
  19. android11.0 Launcher3 高端定制之电话和短信未读标记(红圈数字)
  20. .dat数据文件怎么打开_SPSS统计分析,之一 SPSS数据文件读取

热门文章

  1. 设计模式 抽象工厂模式(Abstract Factory)
  2. 完全优化MySQL数据库性能的八大巧方法
  3. ElasticSearch vs Solr多维度分析对比
  4. shp与json互转(转载)
  5. 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(11)---各种线程相关操作类...
  6. 嵌入式linux的运行过程,ARM嵌入式设备Linux系统启动步骤和方式
  7. 计算机服务管理器延迟启动项,开机延时启动程序
  8. vant显示日期格式_Vue+Vant ui实现日期时间选择
  9. smartdns使用指南_Windows10 玩SmartDNS告别污染
  10. css好用吗,一些不好记却很好用的 CSS 属性