メメメモモ

プログラミング、筋トレ、ゲーム、etc

Config::Pitモジュールについて

Config::Pitモジュールは、プログラムにパスワードなどのハードコードを避けるためのモジュールです。
例えば、ニコニコ動画ダウンローダを作るときは、ログインする処理を書く必要があります。その時に、下記のようにパスワードをプログラムに書いてしまう場合があります。

use strict;
use LWP::UserAgent;

# プログラムをみれば、パスワードばればれ
my $mail = 'yourmailaddress';
my $password = 'yourpassword';

my $ua = LWP::UserAgent->new;
$ua->post('http://www.test.jp/login',
                    [ mail => $mail,
                      password => $password
                    ]);


これを避けるために、Config::Pitモジュールを使用します。
やっていることは単純で、usernameとpasswordをプログラムに直接書くのではなくて、
YAML形式の設定ファイルを作成して、それをプログラムから読み込むようにするものです。


まず、下記のワンライナーで、ログイン情報を登録します。

perl -MConfig::Pit -e'Config::Pit::set("www.test.jp", data=>{ username=>"yourmailaddress", password=>"yourpassword" })'


これで、「~/.pit」にYAML形式の設定ファイルが作成されます。
これを読み込むプログラムは下記のようになります。

use strict;
use warnings;

use Config::Pit;

my ($username, $password) = do {
          @{ Config::Pit::get( 'www.test.jp', require => {
                 'username' => 'yourmailaddress',
                                         })}{ qw/username password/ };
};

my $ua = LWP::UserAgent->new;
$ua->post('http://www.test.jp/login',
                    [ mail => $mail,
                      password => $password
                    ]);


こんな感じで、プログラムに直接パスワードを書く必要がなくなります。