wifky の場合、I/O アクセスを極力必要最小限にするよう、 一度読んだ情報は変数で引き回すようにしているんだけれども、 それが原因で関数のパラメータが複雑になり、 結果ソースが読みにくくなってしまっている。 そういう引き回す情報は、ほとんどページに関するものであるため: ソースそのもの(ユーザが入力した) サニタイズ済みテキスト ページ名 ファイル名 最終更新日時 サイズ情報 など「ページオブジェクト」の「属性」として持たせるのがよいと思われる。 これらは package wifky::Page; sub fname{ my ($self)=@_; $self->{fname} ||= unpack('h*',$self->{title}); } てな感じでアクセサを実装すると 要求されたタイミングで、1回だけ計算やI/O 処理が動く 2回目以降のアクセスでは、1