confファイルを読み込むモジュールConfig::Simple

同期がやっていることに口を出してしまったため,手も出そうと思って簡単なプログラムを作成した.
引数なんかでパラメータを変更するのもいいけれど,外部APIを利用するときのIDをいちいち引数で渡したら面倒くさいよなァァと思ったので,行儀よくconfファイルを作成することに.


そういや,confファイルを読み込むモジュールってないのかな?と思っていたら,やっぱりあった.


こりゃ便利.けれど,Config::Simpleがインストールされてないといけないからなぁ.というわけでちょっとしたライブラリを書いてみることにした.

#
# tinyconfig.pl
#
# Description: config simple loading library
# Usage: 
#   require "tinyconfig.pl";
#   my $value_of_ref = loadfile("sample.conf");
#
# where, sample.conf is...
#  hoge : foo
#  piyo : 4649
#
# then, %value_of includes
#   hoge => 'foo'
#   piyo => 4649
#

use strict;
use warnings;

sub loadfile{
  my $filename = shift;
  my %value_of;

  open(IN, "< $filename") or die "Cannot open $filename\n";

  foreach my $line (<IN>){

    # ignore comments
    next if ($line =~ /^#/);
    $line =~ s/#.*$//;

    if($line =~ /(\S+)\s*?:\s*?(\S+)/){
      $value_of{$1} = $2;
    }
  }


    if($line =~ /(\S+)\s*?:\s*?(\S+)/){
      $value_of{$1} = $2;
    }
  }

  close(IN);

  return \%value_of;
}

1;


人様に見せるようなものではないですね.いつになっても綺麗な正規表現が書けるようにならない.今のところ,

hoge  :   piyo    # hogeの値をbarに変更するといいことあるかも

というような行末コメントをはじくことができない.できるようにしました.

合計20分程度.