WWW::MechanizeとWeb::ScraperでLast.fmからfreemp3をダウンロードするスクリプトを久しぶりに動かしてみたら、エラーになった 。
確認したところ、どうやらコンフィグ(Config::YAML)の使い方に問題があったようだ。
なんとも恥ずかしい。
そこで、最近使い方を覚えた小技をいくつか加えてグレードアップすることにした。
Config::Pitを使ってみたり、autodieを使ってみたり。
Config::PitはWindowsでは使えないと勝手に思い込んでいたけど、普通に使えた。
スクリプトにアカウント情報を入れなくても済むので、ブログで公開するときにも気を使わなくて済むのが良いです。
Config::Pitは、getとsetが組になっていて、まずはsetでアカウント情報を記録しておきます。
やり方は幾つかあるのですが、とりあえず今回のスクリプトに合わせて作ったスクリプトを晒しておきます。
# utf8
# use Acme::PerlTidy;
use strict;
use warnings;
use Config::Pit;
# 設定
Config::Pit::set(
"last.fm",
data => {
username => "username",
password => "password",
}
);
usernameとpasswordの値を、実際のアカウント情報に変更してから実行すると、私の環境では
C:\Users\<username>\.pit
の中に、YAMLファイルで入力した情報が保管されていました。
あとは使うときにsetで使ったキー(今の場合は「last.fm」)で引いてやると、このアカウント情報がちゃんと使えます。
便利ですね。
autodieは、Fatalの自動版という感じでしょうか。
use autodieとしておくだけで、色々なエラーを捕まえてdieしてくれます。
例えば以下のようなスクリプトでは、ファイルがなかった時にはdieします。
# utf8
use strict;
use autodie;
open my $fh, '<:utf8', 'autodie.dat';
close $fh;
便利ですね。

