本を読む

読書やコンピュータなどに関するメモ

LWPはHTMLのhttp-equivを解釈する

 結論はタイトルのとおり。PerlのWebプログラマーの人だったらみんな知ってるようなことでしょうが、初めて知ったので、メモ。

 hoge.htmlを用意。

<HTML>
<head>
<meta http-equiv="content-type" Content="text/html; charset=utf-8">
</head>
<body>
</body>
</HTML>

 hoge.plを用意。fileスキームなのでHTTPヘッダーの情報はほぼ付かないと予想。

#!/usr/bin/perl
use strict;
use warnings;
use feature qw(:5.10);
use LWP::UserAgent;

my $url = 'file:///path/to/hoge.html';

my $ua = LWP::UserAgent->new;
my $res = $ua->get($url);
my @ct = $res->header('Content-Type');

say for @ct;

 実行結果。Content-Typeにcharset情報が。

$ perl hoge.pl
text/html
text/html; charset=utf-8

 どこで解釈しているか、LWP::UserAgent→LWP::Protocol::http→LWP::Protocolとソースをドリルダウンして確認。collectメソッドで以下のようになっていました。

	$parser = HTML::HeadParser->new($response->{'_headers'});
        (略)
	    if ($parser) {
		$parser->parse($$content) or undef($parser);
	    }

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/576-bbdce1d6

続・LWPはHTMLのhttp-equivを解釈する

LWPはHTMLのhttp-equivを解釈する の続き。  PerlのLWPを使っていて、最近どうも挙動がヘンだなぁと思っていたところ、上記エントリで書いた...

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad