- 締切済み
ホームページの内容をマッチングするには?
下記のように、 if ($souce !~ /"$in{'hi_url'}"/) { エラー表示させる; } $souce はホームページの内容を格納、 その中に$in{'hi_url'}を含んでるかどうかをチェックしたい。 含んでいるにもかかわらず、エラーの表示が出てしまいます。 どなたか教えてください。 よろしく御願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chaimasuka
- ベストアンサー率57% (26/45)
提示された情報だけですと、いくつかの可能性が考えられます。 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'}"/) の直前で出力してみて確認してみると よいかもしれません。
- s_saike
- ベストアンサー率46% (36/77)
if ($souce !~ /$in{'hi_url'}/) { エラー表示させる; } としても同じですか。
補足
>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; }
お礼
みなさん、 どうもありがとうございました。 /の前にmを入れて上手く行きました。 if ($souce !~ m/"$in{'hi_url'}"/) { エラー表示させる; }