【发布时间】:2015-02-19 07:52:14
【问题描述】:
您好,这个网站已经帮助我多次解决了我在 perl 中的问题。 这是我第一次不得不问一个问题,因为我在谷歌和堆栈溢出上都找不到答案。
我要做的是获取两个单词之间的内容。但他们必须匹配的模式正在发生变化。我正在尝试获取产品详细信息。品牌、描述、名称等。我试图一个接一个地进行正则表达式匹配,但不幸的是这不起作用,因为 $1 保持定义。尝试取消定义 $1 变量会给我错误消息“只读”,这是合乎逻辑的。我将在下面发布我的代码,也许有人有一个如何使其工作的想法。
#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use IO::File;
use utf8;
my $nfh = IO::File->new('test.html','w');
my $site = 'http://www.test.de/dp/';
my $sku = '1550043196';
my $url = join('',$site,$sku);
my $content = get $url;
my $name = $1 if ($content =~ m{<span id="productTitle" class="a-size-large">(.*?)</span>}gism);
print "$name\n";
# My attempt of undefying
#undef $1;
my $marke = $1 if ($content =~ m{data-brand="(.*?)"}gism);
print "$marke\n";
有什么建议吗?
【问题讨论】:
-
您能否提供一个示例输入以及预期输出?
-
旁注,
my ($marke) = $content =~ m{data-brand="(.*?)"}gism;优于my $marke = $1 if ($content =~ m{data-brand="(.*?)"}gism);