実用! Perlで法律改正日を調べる

| 0 Comments | 0 TrackBacks | このエントリーをはてなブックマークに追加 このエントリーのはてなブックマーク件数

Perlを実務で役に立てようと思ったら、やんなきゃいけないのは、つらい事務仕事をいかに楽にできるか、ていうことだと思います。というわけで、法令遵守確認の第一歩、法律改正日をチェックするスクリプトです。

法令データ提供システム [law.e-gov.go.jp] で出てくる法律のページが対象です。

Filename: law_test.pl

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Encode;
use LWP::Simple;
use DateTime::Format::Japanese;
 
my $url  = 'http://law.e-gov.go.jp/htmldata/H05/H05HO091.html';
my $html = get_html( $url );
my $dt   = parse_date( $html );
print "$dt\n";
exit;
 
sub get_html {
  my $uri = shift;
  my $res = get( $uri );
  return decode( 'cp932', $res);
}
 
sub parse_date {
  my $html = shift;
  (my $date = $html) =~ s/^.+最終改正:(.+?日).+$/$1/s;
  my $dt = DateTime::Format::Japanese->parse_datetime( $date );
  return $dt;
}
実行結果:
$ perl law_test.pl 
2007-06-13T00:00:00
$ 
ポイントは、DateTime::Format::Japaneseというモジュールで、法令ページの和暦漢数字の日付文字列をパースしていることです。

~~~

このままじゃあんまり役に立ちませんから、ちょっと工夫して、法令掲載URLのリストを渡して、巡回させます。

Filename: law_check.pl

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Encode;
use LWP::Simple;
use DateTime::Format::Japanese;
 
my @urls = (
  'http://law.e-gov.go.jp/htmldata/H05/H05HO091.html',
  'http://law.e-gov.go.jp/htmldata/H09/H09HO081.html',
  'http://law.e-gov.go.jp/htmldata/H14/H14HO103.html',
);
 
my $fmt = DateTime::Format::Japanese->new(
  number_format => 2,
);
 
foreach my $url (@urls) {
  my $html = get_html( $url );
  my $dt   = parse_date( $html );
  my $str  = ($dt)?$fmt->format_ymd($dt):q();
  print "$url\t$str\n";
}
 
exit;
 
 
sub get_html {
  my $uri = shift;
  my $res = get( $uri );
  return decode( 'cp932', $res);
}
 
sub parse_date {
  my $html = shift;
  my $dt;
  if ( $html =~m/^.+最終改正:(.+?日).+$/m ) {
    my $date = $1;
    $dt = DateTime::Format::Japanese->parse_datetime( $date );
  }
  return $dt;
}
実行結果:
$ perl law_check.pl 
http://law.e-gov.go.jp/htmldata/H05/H05HO091.html       平成19年6月13日
http://law.e-gov.go.jp/htmldata/H09/H09HO081.html       平成19年3月31日
http://law.e-gov.go.jp/htmldata/H14/H14HO103.html       平成19年7月6日
$ 
これで今度から楽できますね! こんな業務しているPerl使いがどのぐらいいるか知りませんけれども!

初出はM.C.P.C.: 法律改正日を確かめるPerlスクリプト [blog.dtpwiki.jp] です。

No TrackBacks

TrackBack URL: http://perl-mongers.org/MT/mt-tb.cgi/34

Leave a comment

About this Entry

This page contains a single entry by CL published on May 31, 2008 3:17 AM.

Web::Scraperを使ってmuxtapeのタイトルを取得する? was the previous entry in this blog.

muxtapeのタイトルをRSSから取得する is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Categories

Pages

Creative Commons License
This blog is licensed under a Creative Commons License.
Powered by Movable Type 4.21-en