HTML内のタイトルをplで抜き出すには?

[上に] [前に] [次に]
さや 1999/08/20(金) 10:29:53
アクセスのログを取るために、PerlでCGIを組んでいます。そこで、判
らないのですが、ページごとのアクセスを管理するために、自動的にア
クセスされたページの<title>以下に記述してある内容を取得するに
は、どうしたらよいのでしょうか。

一応UNIXでは動いたのですが、NT+IISで使おうとしたら動かなくなっ
てしまいました。


$dir='c:/InetPub/wwwroot';
$url='/';
...................
title {
  local($page) = @_;
  local($titl) = ($page);
  $page =~ s/$url/$dir/;
  open(FILE2, $page) || return $titl;
  while (<FILE2>) {
    chop;
    if (/^<TITLE>(.*)<\/TITLE>$/i) {
      $titl = $1;
      last;
    }
  }

よろしくお願いします。

葉月 1999/08/20(金) 11:42:53
NT+IISは、やったことがないので的確な答えではないと思いますが、どこが動かないのでしょうか?
NT上で、Perl for Win32を使って下記のスクリプトを走らせたら正常な表示が返されました。
(どこで、引っかかるのか明確にするため、少しスクリプトを変更しましたが)

$url = "index.html";
print $url, " Title = ",&title($url);

sub title{
  local($page) = @_;
  $title = "Non Title:".$page;
  open(FILE2, $page) || return "Not open the File:$page";
    while (<FILE2>) {
      if (/<TITLE>(.*)<\/TITLE>$/i) {
        $title = $1;
        last;
      }
    }
  close (FILE2);
  return $title;
}

ただ単に、NT+IISの設定だけだったりして...

さや 1999/08/20(金) 13:58:55
葉月さん、ありがとうございます。

いろいろ試していますが、どうも原因はファイルのパスがうまく通って
いないような気がしています。

この辺が怪しいのかな?

$dir='c:/InetPub/wwwroot';
$url='/';
...........
$page =~ s/$url/$dir/;

もう少しいじってみます。また、アドバイスお願いいたします。

[上に] [前に] [次に]