Chinaunix首页 | 论坛 | 博客
  • 博客访问: 538940
  • 博文数量: 102
  • 博客积分: 950
  • 博客等级: 准尉
  • 技术积分: 1094
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-28 16:07
文章分类

全部博文(102)

文章存档

2020年(2)

2016年(5)

2015年(15)

2014年(25)

2013年(18)

2012年(19)

2011年(18)

我的朋友

分类: LINUX

2013-06-09 17:37:04

1.
测试语法
perl -wct test.pl

2.
head online.txt  
2013-06-09 00:35:00,10402,818
2013-06-09 00:40:00,10402,807
2013-06-09 00:45:00,10402,774             

perl  -F',' -ane 'print "$F[0]:$F[2]"; $s{$F[0]}+=$F[2]; END{ print "$_=>$s{$_}\n"  foreach keys %s}'   online.txt

-a 默认调用split

-e 执行命令 ,可以多个,按顺序执行
-n 默认while (<>) 处理文件
$perl-n-e'print"$.-$_" '  file

$perl-n-e'print"$.-$_"'file$perl-n-e'print"$.-$_"'file
$perl-n-e'print"$.-$_"'file

3.
$@ PERL内置变量,Perl解释器从eval语句返回的错误消息
代码
eval { $answer = $a / $b; }; warn $@ if $@;

正确执行后,系统变量$@为空串,如果有错误,$@中为错误信息。


4.
perl -MPOSIX  -e 'print strftime("%Y-%m-%d %H:%M:%S",localtime(time));'

5.
单独使用-l有两个效果:
第一:自动chomp输入分隔号
第二:把$/值付给$\(这样print的时候就会自动在末尾加\n)

1:-l参数,用来给每一个输出加\n.例如
$perl-le'print"HelloWorld"'

6.
原位编辑

使用已有的参数我们可以写出很有效的Perl命令行程序.常见的UnixI/O重定向:
$perl-pe'somecode'>output.txt


这个程序从input.txt读取数据,然后做一些处理再输出到output.txt.你当然也可以把输出重定向到同一个文件里.


上面的程序可以通过-i参数做的更简单些.


2:-i
把源文件更名然后从这个更名的源文件里读取.最后把处理后的数据写入源文件.
如果-i后跟有其他字符串,这个字符串与源文件名合成后来生成一个新的文件名.
此文件会被用来储存原始文件以免被-i参数覆盖.


这个例子把所有php字符替换为perl:
$perl-i-pe's/\bPHP\b/Perl/g'file.txt
程序读取文件的每一行,然后替换字符,处理后的数据重新写入(即覆盖)源文件.


如果不想覆盖源文件,可以使用
$perl-i.bak-pe's/\bPHP\b/Perl/g'file.txt


这里处理过的数据写入file.txt,file.txt.bak是源文件的备份.

阅读(2061) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~