#!C:\perl\bin\perl
print "Content-type: text/html\n\n";
use lib 'HTML/TagParser.pm';
print "TEST";
my $html = HTML::TagParser->new( "http://www.google.co.jp/" );
my $elem = $html->getElementsByTagName( "title" );
print "<title>", $elem->innerText(), "</title>\n" if ref $elem;
exit;
__END__
おそらく、無茶苦茶初歩的な事でつまづいていると思いますが、どうやっても
動きません。予想では、グーグルのタイトルがでてくると思うのですが、
どなたか力をお貸しください。
よろしくお願いします。
まず HTML::TagParser はインストールされていますか?
これは間違いなくインストールされているとして、次の部分を修正してください。
use lib 'HTML/TagParser.pm';
↓
use HTML::TagParser;
http://search.cpan.org/~kawasaki/HTML-TagParser-0.14/lib/HTML/Ta...
TagParser.pm の入っている HTMLディレクトリはそのプログラムと同じ場所にあるのですね?
それでしたら、use lib は必要ありません。
もし別の場所に HTMLディレクトリ を置いているのであれば、その場所を lib で指定してください。
たとえば C:\lib\HTML\TagParser.pm であれば
use lib "C:\lib";
そして、そのあとに次の行が必要です。
use HTML::TagParser;
はい、HTMLディレクトリは同じ場所にいます。なんどもすいません、、、
use HTML::TagParser;
print "TEST";
my $html = HTML::TagParser->new( "http://www.google.co.jp/" );
my $elem = $html->getElementsByTagName( "title" );
print "<title>", $elem->innerText(), "</title>\n" if ref $elem;
exit;
これで試すと、TESTだけ表示されて後はまっしろです(;;)
それ、text/html の出力にしなければならないのに出力内容が HTML になってませんよ。最初の TEST の出力は HTML 的には間違いです。更に title タグの中に文字列を入れてますが、それだとタイトルの指定しかしていません。
ということでまずはまともな HTML ファイルを作ってそれを出すだけ(あるいはそれの一部だけを変更して出すだけ)のプログラムにしてみたらどうですか?
こういう事でしょうか?
print "Content-type: text/html\n\n";
print <<"EOM";
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=shift_jis">
<title></title>
</head>
<body>
EOM
use HTML::TagParser;
print "TEST";
my $html = HTML::TagParser->new( "http://www.google.co.jp/" );
my $elem = $html->getElementsByTagName( "title" );
print "抽出したタイトルは", $elem->innerText(), "です\n" if ref $elem;
print <<"EOM";
</body>
</html>
EOM
exit;
すいません、インストール以外で利用したいのでこのような形になっていますが、これが間違いでしょうか?