1

LWP を使用して、3 つの異なる Web ページ (動的に定義) から html を取得し、それを scalar に割り当ててい$contentます。検索したページの 1 つまたは複数が存在しない場合があるため、getundef が返されることがあります。$content成功したすべての get コマンドが含まれるように、これをどのように処理すればよいですか?

getリクエストの1つだけが定義された値を返した場合に機能する次のものがあります。

unless ($content = get $page_one)
{
   unless ($content = get $page_two)
   {
      unless ($content = get $page_three)
      {
         $content = "";
      }
   }
}

しかし明らかに、複数のページが定義された値を返す場合、すべてのコンテンツを取得することはできません。

4

2 に答える 2

2

これは、条件をネストして、以前の取得の成功に依存するようにするためです。

my $result;
if ($content = get $page_one) { $result .= $content }
if ($content = get $page_two) { $result .= $content }
if ($content = get $page_three) { $result .= $content }
于 2012-09-01T09:11:28.087 に答える
2

1 つの可能性:

$content = join '', grep { $_ } map { get($_) } ($page_one, $page_two, $page_three);

右から左に見てください:

最初に、3 つのページへのアドレスを使用して配列を作成します。

mapこれは、3 つの要素の配列を返す各ページを取得するに渡されます。各要素は、ページのコンテンツまたはundef.

grepthen は s を捨てますundef

join最後に、正常に取得されたコンテンツを連結します。

于 2012-09-01T09:13:53.187 に答える