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] です。



Leave a comment