最近の更新

Perlの練習 その2 家計簿 PerlKakeibo 

Perlで家計簿の経緯

以前 Perl練習のため 

「Perlの練習 その1 電気料金の簡易計算フォーム 」

を作ってみましたが、今回は家計簿に挑戦しました。その1と違って、数値計算だけでなく、ファイル操作や年月日の処理、ファイルの中身のソートなどを行う必要が出てきて、難易度がアップしました。

  1. Perl 時刻の処理 現在年月日、曜日の取得や変換。
  2. 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{元データ書き込み}

のような感じです。簡単ですが、これを書いておかないと、途中で訳がわからなくなります。

 

作ったものが動くというのは楽しいもので、いろいろと挑戦したくなります。

まだ修正中ですが、不満な箇所、変更したい箇所が次から次に湧き出てきて、きりが無いのでこのへんでとりあえず一区切りして、記録を残しておくことにします。

Perl家計簿の作成詳細はこちら

実際の家計簿はこちら(動きます)

参考本

ファイルのopen、close、日付の扱い、配列、ハッシュなどなど、ほとんどこの本を参考に作りました。

10日で作るのは無理でしたがこの本は私にとってのPerlのバイブルです。

10日でおぼえる Perl/CGI 入門教室 第2版 (10日でおぼえるシリーズ)
10日でおぼえる Perl/CGI 入門教室 第2版 (10日でおぼえるシリーズ)

*********

目次(ホーム)

その他の項目