2009年6月23日星期二

Data Munging With Perl

读入啥信息就要把它存在数据结构中,不要扔掉

将数据解析与数据挖掘分开

Sys::Syslog 日志记录

Benchmark 时间测试

perldoc perlre 正则式的介绍文档

my $num_re = qr/[-+]?(?=\d|\.\d)\d*(\.\d*)?([eE]([-+]?\d+))?/;

Convert::SciEng,Number::Format 数值显示格式转换

perldoc perlunicode, perldoc utf8 关于Perl的Unicode支持信息

$, 指定print打印的元素间的分隔符

$" 指定打印 双引号包围的数组或切片 元素间的分隔符

#!/usr/bin/perl
@_=qw/a b c/;
$,='|';
$"='$';
print "@_",'d','e';

# a$b$c|d|e

print @list 元素之间没空格,print "@list" 元素之间有空格

用select切换默认的输出文件句柄:

open FILE, '>out.txt' or die "Can't open out.txt: $!";
my $old = select FILE;
foreach (@data) {
    print;
}
select $old;

$|=1 则print/write之后立即清洗输出缓冲

select((select(FILE),$|=1)[0]); 输出缓冲到FILE,并恢复FILE之前的默认句柄

use Memoize; 缓存数据

每条记录含多行数据,记录之间以一行%%分隔:

$/ = "\n%%\n";

my @CDs;

while (<STDIN>) {
    chomp;
    my (%CD, $field);

    my @fields = split(/\n/);
    foreach $field (@fields) {
        my ($key, $val) = split (/:\s*/, $field, 2);
        $CD{lc $key} = $val;
    }

    push @CDs, \%CD;
}

Time::Local,Data::Calc,Date::Manip 时间处理

表6.1 POSIX::strftime支持的字符,例如%d表示一个月中的第几天

use POSIX qw(strftime);
print strftime('%A %d %B %Y', localtime),"\n";

#星期二 23 六月 2009

Logfile模块用于解析web服务器记录的日志

使用unpack读入固定宽度的数据

HTML::Parser,XML::Parser

Parse::Yapp,Parse::RecDescent

HTML::LinkExtor,HTML::TokeParser,HTML::TreeBuilder,HTML::Element

XML::DOM,XML::RSS

没有评论:

发表评论