-3

私は現在、温度の測定値を含むWebページの情報を抽出して分割しようとしています。私はPerlに関しては完全な初心者であり、問​​題を抱えています。私が情報を抽出しようとしているページは次のとおりです: http: //temptrax.itworks.com/temp。これまでのところ、ページを取得し、splitを使用して4つの温度測定値を4行に分割する方法を理解することができました。これが私がこれまでに思いついたものです:

#!/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";

}

私が問題を抱えている次のステップは、caseステートメントを使用して4つの温度測定値を分離することです。私はそれらを行う方法を完全に理解していません。特定の番号1〜4を指定するときに、各プローブの読み取り値を個別に取得できるようにしたいと思います。これを行うための最良の方法は何ですか?

4

1 に答える 1

0

ハッシュに直接解析することで、キーを単純に反復するか、データ構造でやりたいことを何でも行うことができます。必要ありませんcase。ところで、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;
于 2012-10-25T03:44:37.317 に答える