画像ファイル整理

とりあえず思いついたものを実際のコードに落としてみる。軽くテストした感じだとうまくいきそう。実際に使うにはもう少し手を入れないとあんまり役立たないかな。引数の処理あたりもモジュールから持ってきて実装しよう。再利用再利用。

追記

ひさびさにPerlを触ったらちょっとはまったのでメモ。

いろいろ書いてたらみょんなエラーが出ちゃう。サブルーチンを呼んでるところ。

print suffix $file;
# デバッグプリント。

sub suffix {
    # 引数にほげほげして何か返す。
    # 具体的にはファイル名を受け取って拡張子だけ返す関数。
    # 内容はめんどくさいから省略。
    # &File::Basename::fileparse使ってるんだけどね。
    # …じつはコードよりこのコメントのほうが長い。
}

上のコードが以下のように解釈されてるみたい。

print $file->suffix;

perlによって間接オブジェクト形式でのメソッドの起動だと解釈されちゃってる。$fileはただの文字列でオブジェクトじゃないし、だから当然suffixなんてメソッドが存在するわけもないという。以下のように実際にsuffixサブルーチンを呼び出す前に、宣言だけしておくことで回避できました。ふだん書くときはサブルーチンはメインのコードのあとに書くからなぁ。

sub suffix; # 宣言

print suffix $file;
# デバッグプリント。

sub suffix {
    # ここで定義。略。
}

デバッグプリントなんていらないよ、とかそういう類のツッコミはいりません。