Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173173
  • 博文数量: 159
  • 博客积分: 7007
  • 博客等级: 准将
  • 技术积分: 1750
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-17 15:05
文章分类

全部博文(159)

文章存档

2010年(39)

2009年(106)

2008年(14)

我的朋友

分类:

2009-12-24 17:28:13

Template::Extract

by Fayland Lam

 由☻ 唐鳳 ☺ 所编写,可以使用 TT2 表达式从某个数据里提取东西,而无须使用正则表达式。

一般来说,得到一个 HTML 内容之后,可以使用正则,或者类如  之类的模块来提取数据。本文介绍的模块能同样使 job 完成,并且更加优雅。

以我们当前的  举例,得到所有的 link 和对应的编号。

   1 use strict;
   2 use warnings;
   3 use LWP::Simple 'get';
   4 use Template::Extract;
   5 use Data::Dumper::Perltidy; # or just Data::Dumper
   6 
   7 my $html = get('');
   8 my $rule = <;
   9 [% FOREACH link IN links %]
  10 
11 [% END %] 12 RULE 13 14 my $extract = Template::Extract->new(); 15 my $data = $extract->extract($rule, $html); 16 print Dumper(\$data);

运行一下:

$VAR1 = \{
    'links' => [
        {
            'link' => {
                'num' => '1',
                'url' => '2009/local_lib.html'
            }
        },
        {
            'link' => {
                'num' => '2',
                'url' => '2009/PerlDevENV.html'
            }
        },
        {
            'link' => {
                'num' => '3',
                'url' => '2009/EndScope.html'
            }
        },
        {
            'link' => {
                'num' => '4',
                'url' => '2009/autodie.html'
            }
        },
        {
            'link' => {
                'num' => '5',
                'url' => '2009/SSHBatch.html'
            }
        },
...

代码简单可靠。:) Enjoy

谢谢。


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