|
#!/usr/bin/perl
use LWP::Simple;
use HTML:arser;
my $url = shift || "http://www.chinaunix.net";
my $content = LWP::Simple::get($url) or die("unknown url\n");
my $parser = HTML:arser->new(
start_h => [\&start, "tagname, attr"],
);
$parser->parse($content);
exit 0;
sub start
{
my ($tag, $attr, $dtext, $origtext) = @_;
if($tag =~ /^img$/) {
#改为 if($tag =~ /^a$/),就应该是找出所有链接的
#我是参考精华帖 Perl模块使用 => 简短例子代码集合! 第37个
#但是执行以后竟然没有任何结果,这是为什么?
if (defined $attr->{'src'} )
{
print "$attr->{'src'}\n";
}
}
}
我想把它改成把所有的连接获取后存在一个数组中,不知道该怎么写
sub get_hyperlinks {
my @links;
my ($data, $model) = @_;
my $parser = HTML:arser->new(
start_h => [\&start, "tagname, attr"],
);
$parser->parse($data);
return @links;
sub start
{
my ($tag, $attr, $dtext, $origtext) = @_;
# my ($link) = @$_;
if($tag =~ /^a$/)
{
if (defined $attr->{'src'} )
{
$links[++$#links]= $attr->{'src'};
}
}
}
}
上面的写法提示:Variable "@links" will not stay shared at yzu.pl |
|