タグ

ブックマーク / fbis.hatenablog.com (6)

  • 国民の祝日の名称を取得するモジュール - Unknown::Programming

    昨日の続き。 Calendar::Japanese::Holidayなるものを触ってみた - Unknown::Programming いや、続きというか昨日も言ったように僕も前に作ったやつがあるので折角だし公開しよーかなと。 DateTime::Holiday::Japaneseという名前で作ってあるんだけど、名前空間的にDateTime使ってるということもありその辺良くわかんないので、CPANにはあげてません。 →DateTime-Holiday-Japanese-0.01.tar.gz ソースは以下 package DateTime::Holiday::Japanese; use strict; use warnings; use DateTime; use UNIVERSAL::require; use Class::Inspector; use utf8; use base qw

    国民の祝日の名称を取得するモジュール - Unknown::Programming
  • Calendar::Japanese::Holidayなるものを触ってみた - Unknown::Programming

    の祝日の名前を取得するモジュールのようです。 僕も前に自分用に同じようなヤツを作りました。 でCalendar::Japanese::Holidayなんですが、実装はさておき、実行結果に少し不満が。 というのも昔の休日が軒並みコケる。 まぁどこまで対応するかは用途によって変わるとは思うけど少なくとも、昭和23年(1948年)7月に制定された「国民の祝日に関する法律」を一番古いケースとして対応したほうがいいかと。 まずそれによると元旦は1949年〜現在の1月1日。 成人の日は1949年〜1999年の1月15日。2000年以降は1月の第二月曜日(ハッピーマンデー) 建国記念の日は1967年〜現在の2月11日。 天皇誕生日、というか4月29日の扱いが少しややこしい。 4月29日は1949年〜1988年の間が天皇誕生日、1989年〜2006年の間がみどりの日、2007年〜現在が昭和の日となる。

    Calendar::Japanese::Holidayなるものを触ってみた - Unknown::Programming
  • 正規表現ベースのHTML::FillInForm::Lite - Unknown::Programming

    HTML::FillInFormを正規表現ベースで再実装したHTML::FillInForm::LiteってのがCPANにリリースされてます。 なかなか爽快ですね。HTML::FillInFormHTML::Parserを利用しているので無駄な部分が多かったのがデメリットだったわけで。 ドキュメントには2倍近く高速になると書いてたので一応ベンチを取ってみました。 use Benchmark qw(cmpthese timethese :hireswallclock); use HTML::FillInForm; use HTML::FillInForm::Lite; my $str = q{ <form> <input type="text" name="text_data1" value="" > <input type="text" name="text_data2" value="

    正規表現ベースのHTML::FillInForm::Lite - Unknown::Programming
  • Perlにおける定数宣言(constant or Readonly or Attribute::Constant) - Unknown::Programming

    正直言いますと、個人的には定数って殆ど使わないんですよね。 昔はちょこちょこ使ってたんですが、最近は定数となりうる物は基的にYAML等外部ファイルに持たせて変更可能にすることが多いのでまったく使ってません。 ですがそれでもPerlで定数を使いたい時にはどーすんの?っていう時のために軽くここにまとめておきます。 言わずもかなPerl5.8にはconstantという定数を定義できる標準モジュールがあります。 use strict; use constant PI => 3.14; # 表示 print PI; # 3.14 # 上書きしようとすると・・・ PI = 3; # Can't modify constant item in scalar assignment とこのように上書きしようとするとエラーを吐いて死にます。 しかも実行時ではなく、コンパイル時にエラーを吐きます。 実はこのc

    Perlにおける定数宣言(constant or Readonly or Attribute::Constant) - Unknown::Programming
  • 複雑なデータ構造はData::Visitor::Callbackで簡単一発変換 - Unknown::Programming

    ハッシュと配列の参照が入り交じったような複雑なデータ構造の、全value を均等に加工したかったので次の様にしてみました。 (中略) すでに似たモジュールがある気が激しくしています! ご存知でしたらぜひ教えてくださいませ。 [perl] 複雑なデータ構造のvalue を一気に書き換える方法 - harupiyoの日記 ということでData::Visitor::Callbackがズバリそれにあたるものじゃないかなーと。 use strict; use warnings; use Data::Dumper; use Data::Visitor::Callback; my $rh_testdata = { 'a' => 1, 'b' => { 'aa' => 1, 'ab' => [ 1, 2, 3, \ 'test', 5 ], 'ac' => 3, }, 'c' => 3, 'd' => 4

    複雑なデータ構造はData::Visitor::Callbackで簡単一発変換 - Unknown::Programming
  • 携帯動画の再生時間をMP4::Infoで取得しませう - Unknown::Programming

    …というか3gpファイルのヘッダを解析して再生時間の取得を試みるわけなので延いてはmp4の解析ということになりますが故、結局のところMP4::Infoを使うことで万事OKだろっていう話ですね。 use MP4::Info; # v1.12 use Path::Class; my $file = file '/foo/bar/movie.3gp'; my $mp4 = MP4::Info->new($file->openr); printf "total second is %s", $mp4->SECS; このようにすれば動画のトータル秒数が取得できます。 他にも色々とメソッドがありまして、様々な情報を取得できるわけですがそれらはドキュメントに書いてるのでここでは触れませぬ。 が、実装部分でひとつ気になる部分がありまして、各種メソッドの挙動をAUTOLOAD様に任せておられるようなのでそこ

    携帯動画の再生時間をMP4::Infoで取得しませう - Unknown::Programming
  • 1