Perlの練習 その2 家計簿 PerlKakeibo
Perlで家計簿の経緯
以前 Perl練習のため
「Perlの練習 その1 電気料金の簡易計算フォーム 」
を作ってみましたが、今回は家計簿に挑戦しました。その1と違って、数値計算だけでなく、ファイル操作や年月日の処理、ファイルの中身のソートなどを行う必要が出てきて、難易度がアップしました。
- Perl 時刻の処理 現在年月日、曜日の取得や変換。
- Perlの基本 その2 openのモード、keys関数、ハッシュ、while、foreach、for、入力チェック、ファイル削除、ファイル名変更、年月日から曜日を計算
など勉強しました。
家計簿ってのは単純かと思っていたら、結構複雑です。あちらこちらに不具合が出て、手直しして確認、を繰り返しているとあっというまに1週間、2週間が過ぎます。
で、なおかつ次から次に不満が出てきますのできりがありません。電気料金計算にはなかったことです。
Perlの基本を解説した本(下記参照)が非常に参考になりました。日付の扱いやハッシュなどについて、この本で調べながら作って、なんとか必要最低限の家計簿ができたのが、とりかかってから2ヶ月後くらいでした。
最初の頃、頭の中だけでモゴモゴ考えて、わかったつもりでプログラムだけを書きすすめていました。
単純そうに見えても、結局エラーが頻発して、あれこれ修正しているうちに、自分がどこにいて、何をやろうとしているのかわからなくなります。
頭の中だけですぐに解決できそうなそうな問題に見えても、最初の構想をきちんとメモしておくことは大切なんですね。
やりたいことを言葉できちんと記しておけば、迷ったときはそれを読み返せばいいので、だいたいうまくいくと思います。
私の場合忘れっぽいので、1日か2日経つと、ほとんど何をやっていたか忘れてしまってます。
メモというのは、具体的には
## 1. CSVファイル読み込みopen 元データを配列に格納
## 2. ファイルを書き込みOPEN
open (DAYDATA,">$logpath$in_ichi_ym.csv") || &printError("daycsv_rewrite in_ichi_ym readエラーです");
eval{flock(DAYDATA,2);};
## 3. input データと元データのcount比較
## 4 配列 split
## 5. if番号一致なら{データ書換え} 、ナンバー不一致else{元データ書き込み}
のような感じです。簡単ですが、これを書いておかないと、途中で訳がわからなくなります。
作ったものが動くというのは楽しいもので、いろいろと挑戦したくなります。
まだ修正中ですが、不満な箇所、変更したい箇所が次から次に湧き出てきて、きりが無いのでこのへんでとりあえず一区切りして、記録を残しておくことにします。
実際の家計簿はこちら(動きます)
参考本
ファイルのopen、close、日付の扱い、配列、ハッシュなどなど、ほとんどこの本を参考に作りました。
10日で作るのは無理でしたがこの本は私にとってのPerlのバイブルです。
10日でおぼえる Perl/CGI 入門教室 第2版 (10日でおぼえるシリーズ)
*********
- Perlの基本 その2
- Perlの練習 その2 家計簿 PerlKakeibo メモ
- Perl 時刻の処理はとりあえずこれで
- Internal Server Error でCGIプログラムが動作しない 2008/08
- Perl のエラー解決と疑問点整理 2008/08
- Perlの練習 その1 電気料金の簡易計算フォーム
- Perl の基本