<a href="http://www.amazon.co.jp/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AEPerl-%E7%AC%AC5%E7%89%88-Randal-L-Schwartz/dp/4873114276%3FSubscriptionId%3DAKIAJSJNHUSHZBCW2UMQ%26tag%3Dtnnsst35-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4873114276" title="Amazon で商品の詳細を確認する"><img src="http://ecx.images-amazon.com/images/I/51Hgdb6WcQL._SL160_.jpg" alt="初めてのPerl 第5版" /></a> <a href="http://www.amazon.co.jp/Perl-CPAN%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89-%E5%86%A8%E7%94%B0%E5%B0%9A%E6%A8%B9/dp/486267108X%3FSubscriptionId%3DAKIAJSJNHUSHZBCW2UMQ%26tag%3Dtnnsst35-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D486267108X" title="Amazon で商品の詳細を確認する"><img src="http://ecx.images-amazon.com/images/I/51R67-AW4BL._SL160_.jpg" alt="Perl CPANモジュールガイド" /></a>
今日はPerlと向き合った日。 設定ファイルをYAML形式で外だしして読み込むための、YAML.pmのラッパーをかいた。
My/Config.pm [perl] package My::Config;
use strict; use warnings; use YAML qw(LoadFile);
複数のファイルを読み分ける場合は、loadにファイルパスを渡すようにする。
use constant YAML_FILE_PATH => '/var/config.yml';
sub load { my ($key) = @_; my $config = YAML::LoadFile(CONFIG_FILE_PATH); return $key ? $config->{$key} : $config; }
1; [/perl] 使うとき [perl] !/usr/bin/perl
use strict; use warnings;
use FindBin; use lib $FindBin::Bin;
use My::Config;
my $val = My::Config::load('foo'); [/perl] 機能はキーを指定してデータをとってくるだけ。 キーを指定しない場合は全てとってくる。
わざわざモジュール書くほどなのか謎だが、「My::Config」という名前で使えることにすごく意味があると思っている。
まぁやってることはたいしたことないけど、以下のことを覚えた。
- パッケージ名とファイルの置き方の関係性 (My/Config.pm → package My::Config)
- パッケージの書き方
- パッケージの使い方
- use lib を絶対パスで直書きしてると死ぬ
- FindBin
- テストとTest::Simple
あと、テストが全くなくてあれだったのでテスト書きだした。