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) |