人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perlに関する初歩的な質問です。以下のソースですが、

#!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__

おそらく、無茶苦茶初歩的な事でつまづいていると思いますが、どうやっても
動きません。予想では、グーグルのタイトルがでてくると思うのですが、
どなたか力をお貸しください。

よろしくお願いします。

●質問者: zachouR
●カテゴリ:インターネット ウェブ制作
✍キーワード:EXIT HTML LIB Perl pm
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ootatmt
●50ポイント

まず HTML::TagParser はインストールされていますか?

これは間違いなくインストールされているとして、次の部分を修正してください。


use lib 'HTML/TagParser.pm';

use HTML::TagParser;


http://search.cpan.org/~kawasaki/HTML-TagParser-0.14/lib/HTML/Ta...

◎質問者からの返答

すいません、インストール以外で利用したいのでこのような形になっていますが、これが間違いでしょうか?


2 ● ootatmt
●50ポイント

TagParser.pm の入っている HTMLディレクトリはそのプログラムと同じ場所にあるのですね?

それでしたら、use lib は必要ありません。

もし別の場所に HTMLディレクトリ を置いているのであれば、その場所を lib で指定してください。

たとえば C:\lib\HTML\TagParser.pm であれば

use lib "C:\lib";

そして、そのあとに次の行が必要です。

use HTML::TagParser;

http://q.hatena.ne.jp/1171522287

◎質問者からの返答

はい、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だけ表示されて後はまっしろです(;;)


3 ● noboru
●20ポイント

それ、text/html の出力にしなければならないのに出力内容が HTML になってませんよ。最初の TEST の出力は HTML 的には間違いです。更に title タグの中に文字列を入れてますが、それだとタイトルの指定しかしていません。

ということでまずはまともな HTML ファイルを作ってそれを出すだけ(あるいはそれの一部だけを変更して出すだけ)のプログラムにしてみたらどうですか?

http://www.tohoho-web.com/wwwbeg1.htm#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;

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ