今日はPerlと向き合った

            <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

あと、テストが全くなくてあれだったのでテスト書きだした。