perl-LWP::Simpleでgetしたコンテンツの文字コード

LWP::Simple の get で取得してくるコンテンツは、metaタグcharset だけでなく

  <meta http-equiv="content-type" content="text/html; charset=shift_jis">

 

htmlタグの lang 属性が設定されていないと正常に変換してくれないようだ。設定されてないと内的なのデコードがされず元のコードのままで返される。

  <html lang="ja">

 

 

 

perlのパターンマッチング

perlを使用してコマンドライン引数で渡したパラメータ文字列のパターンマッチングを行うが何故か上手くいかない。

正規表現が間違っているのかと思っていろいろ試すがNG。

とりあえず、コマンドライン引数ではなく、直接スクリプト内に文字列を定義すると問題なく出来ることが判明。

print文でその文字列とコマンドラインで渡した場合の内容を表示してみるが、どちらも同じ。

if文で比較しても同じだ!

スクリプト内では以下によりutf8を使用している。

use encoding 'utf-8';

utf8フラグが関係しているのかとフラグを utf8::is_utf8 によりチェックしてみる。するとコマンドラインで渡した場合にはフラグがたっていなかった。

Encode::_utf8_on でフラグをセットすると正常に動作した。

コマンドラインからの引数は、utf8でもutf8フラグは付いていないらしい。

正規表現が悪いのかと思ってかなりハマってしまった!技術が未熟と言うことか!!