最近使っているPerlスクリプトのひな形

2009年3月27日
| コメント(0) | トラックバック(0) 最近使っているPerlスクリプトのひな形

Windowsのコマンドプロンプトは使いにくいので、最近は使っているエディタからスクリプトを起動することが多いのだが、utf8で書いたコードは文字化けして読めない。
まあ、設定があるのかもしれないけど。

あと、同じく設定があるとは思うのだけど見つからないのが、新規ファイルの文字コードの指定。
新規ファイルを作るとANSIになってしまって、うっかり保存すると日本語が化けた状態で保存されてしまう。

で、今のところ、そのどちらもカバーするようなひな形を作って、そこからスクリプトを書いていくようにしている。

そのひな形は以下のとおり。

# utf8
 
use strict;
use warnings;
use YAML qw (Dump);
sub p (@) { print Dump(@_); }
 
use utf8;
binmode STDOUT => ':encoding(cp932)';

とりあえず、1行目は全角文字で書いてある「utf8」によって、開いた時にファイルの文字コードを「BOMなしのutf8」として認識してくれる。

strictとwarningsは、ないと気持ち悪いので、とりあえず書いておく。

で、データの確認用としてYAMLを使っている。
以前はData::DumperをIndent=1して使っていた。
YAMLは、慣れるまでは配列とハッシュの階層の感覚がよくわからない事もあるが、記号が少なくて見やすいのでこっちにした。
なにより、文字がエスケープされないのが良い。

で、binmodeに引数を加えることで、標準出力へ出す文字列はすべてcp932(機種依存ありのShift_JIS?)に変換してから出力する。
こうすると、エディタの出力ペインにも文字化けせずに表示される。


使ってみた例がこれ。

# utf8
# http://wiki.bit-hive.com/tomizoo/pg/Perl%20%BD%CB%C6%FC%CC%BE%A4%CE%BC%E8%C6%C0
 
use strict;
use warnings;
use YAML qw (Dump);
sub p (@) { print Dump(@_); }
 
use utf8;
binmode STDOUT => ':encoding(cp932)';
 
use Calendar::Japanese::Holiday;
 
# 祝日一覧の取得
my $holidays;
p $holidays = getHolidays(2008, 5);
p $holidays = getHolidays(2008, 5, 1);
foreach my $month ( 1 .. 12 ) {
    $holidays = getHolidays(2009, $month, 1);
    p { month => $month, holidays => $holidays};
}
 
# 祝日かどうかの判定
p my $name = isHoliday(2007, 5, 5);

トラックバック(0)

このブログ記事に対するトラックバックURL:

コメントする

Google検索

Last.fm

このブログ記事について

このページは、のぶりんが2009年3月27日 00:03に書いたブログ記事です。

ひとつ前のブログ記事は「ループアンローリングとデータハザードのデモをPerlでやってみた」です。

次のブログ記事は「二つの配列からハッシュを作成するベンチマーク」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.
Powered by Movable Type