Perl入门一,通过shell执行perl语句

前言

根据《Perl语言参考手册》介绍,Perl是Practical Extraction and Report Language的取首字母缩写(实用报表提取语言),它是由Larry Wall设计的,并由他不断更新和维护,用于在UNIX环境下编程。

  • Perl具有高级语言(如C)的强大能力和灵活性。事实上,你将看到,它的许多特性是从C语言中借用来的。
  • 与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl来运行而已。这意味着Perl对于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。
  • Perl提供脚本语言(如sed和awk)的所有功能,还具有它们所不具备的很多功能。Perl还支持sed到Perl及awd到Perl的翻译器。

简而言之,Perl象C一样强大,象awk、sed等脚本描述语言一样方便

正文

接触Perl是由于看到perl在文本处理上的强悍,百度之后发现网上提到的基本也是用perl来做文本操作,比如在一个文件中替换特定字符串,

perl -pi -e 's/originaltextstring/replacementstring/g' filename

参数-pi -e的意思不是很清楚,结尾的g表示替换文档中出现的说有匹配,

这句话直接作为shell语句在终端执行或者写在shell脚本中,

下面通过示例来演示一下,

1.新建一个用于测试的文本,输入一些内容

  vi testperlreplace

2.文件创建完毕看一下我写了什么内容:

cat testperlreplace

-----------------------------------------------

test ni da ye

nidayede testtest

----------------------------------------------

3.现在替换其中所有的test为hello,

  perl -pi -e 's/test/hello/g' testperlreplace

4.现在查看文本内容应该已经变了,

cat testperlreplace

---------------------------------------------

  hello ni da ye

  nidayede hellohello

---------------------------------------------

补充

关于perl 后面的-p,-i,-e代表的含义,google后有个老外解答了这个问题,不知正确性如何:http://www.linuxquestions.org/questions/programming-9/perl-replace-text-in-file-476382/

  • -p 告诉Perl对后面添加的文件名参数进行遍历,大致和sed中的这段代码效果类似

  while (<>) {

  ... # your program goes here

  } continue {

  print or die "-p destination: $!\n";

  }

我们上面的例子只是一个单独的文件,按着样的话,应该可以跟多个名字,甚至*匹配;

  • -i 大致是用来读取文件时进行备份操作。
  • -e 告诉Perl后面跟上perl语句

-p和-i可以合在一起-pi,-p -e也可以何在一起,但是-i,-e不能合在一起写-ie,下面的语句表示在所有前缀为testperlreplace的文件中替换test字符串为hello

  perl -pi -e 's/test/hello/g' testperlreplace*