• 締切済み

ホームページの内容をマッチングするには?

下記のように、 if ($souce !~ /"$in{'hi_url'}"/) { エラー表示させる; } $souce はホームページの内容を格納、 その中に$in{'hi_url'}を含んでるかどうかをチェックしたい。 含んでいるにもかかわらず、エラーの表示が出てしまいます。 どなたか教えてください。 よろしく御願いします。

みんなの回答

回答No.2

提示された情報だけですと、いくつかの可能性が考えられます。 1. if ($souce !~ /"$in{'hi_url'}"/) の時点で、 1.1 $souce に想定している文字列が格納されていない 1.2 $in{'hi_url'} に想定している文字列が格納されていない 2. $in{'hi_url'} とマッチングするはずの文字列が、 $souce の中では、改行してしまっている 3. $in{'hi_url'} が日本語を含んでいて、取得したHTML のソースと 文字エンコーディング が異なっている などなど。 1 については、print や Data::Dumper などによって、 if ($souce !~ /"$in{'hi_url'}"/) の直前で出力してみて確認してみると よいかもしれません。

ChinaNet
質問者

お礼

みなさん、 どうもありがとうございました。 /の前にmを入れて上手く行きました。 if ($souce !~ m/"$in{'hi_url'}"/) { エラー表示させる; }

  • s_saike
  • ベストアンサー率46% (36/77)
回答No.1

if ($souce !~ /$in{'hi_url'}/) { エラー表示させる; } としても同じですか。

ChinaNet
質問者

補足

>if ($souce !~ /$in{'hi_url'}/) { エラー表示させる; } >としても同じですか。 同じです。因みに、$souceは、下記のサブルーチンから生成したものですが、問題あるとは思いません。 use LWP::UserAgent; use HTTP::Request; my $ua = new LWP::UserAgent; $ua->agent('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'); my $request = new HTTP::Request('GET', $url); my $response = $ua->request($request); if ($response->is_success) { $souce = $response->content; }

関連するQ&A