我目前正在尝试提取和分解包含温度读数的网页的信息。对于Perl而言,我是一个完全的初学者,而且我遇到了一些麻烦。我尝试从中提取信息的页面是:http://temptrax.itworks.com/temp。 到目前为止,我能够弄清楚如何获取页面并使用split将四个温度读数分解为四行。到目前为止,我能够提出这个问题:
#!/usr/bin/perl
use warnings;
use LWP::Simple;
use v5.10.1;
my $content = get('http://temptrax.itworks.com/temp');
my @split = split ('Probe',$content);
foreach my $split(@split){
$split =~ s/'Probe''|'/ /g;
print $split . "\n";
}
我遇到问题的下一步是使用案例陈述分离四个温度读数。我不太明白该怎么做。我希望能够在给出特定数字1-4时分别获得每个探针的读数。最好的方法是什么?
答案 0 :(得分:0)
通过直接解析为哈希,我们可以简单地遍历键,或者做任何其他想要对数据结构做的事情。不需要case
。 BTW Switch
模块已弃用,实际上不应该使用。
#!/usr/bin/env perl
use strict;
use warnings;
use LWP::Simple;
my $content = get('http://temptrax.itworks.com/temp');
my %probes = $content =~ /Probe\s*(\d)\|\s*(\-?[\d\.]+)/g;
foreach my $probe (sort keys %probes) {
print "$probe => $probes{$probe}\n";
}
正则表达式可以解释(甚至替换):
my %probes = $content =~ /
Probe\s* # starts with Probe
( # start capture
\d # a number (probe)
) # end capture
\|\s* # separated with a pipe symbol
( # start capture
\-? # possibly negative
[\d\.]+ # digits or decimals (at least one)
) # end capture
/gx;