Macの青色申告をHackする

Hackと言っても、入力をちょっとだけ改善しようという話。
入力する件数は今まで通りなので、あしからず。

まずは、前年度分のデータを書き出してみましょう。

  1. 「メンテナンス」ボタンをクリック
  2. 「仕分データ書き出し」ボタンをクリック
  3. 適当なファイル名を付けて、すぐ見つけられるところに保存

そして、書き出したファイルを見ると・・・?

ただのタブ区切りデータでしたー!

たぶん、この書式で日付とか金額を変えて、
「仕分データ取り込み」ボタンを押せば入力出来るのでは???

という訳で、じっくりフォーマットを見てみることにします。
適当なテキストエディタで開くと、
改行文字はCRで、文字コードはShift_JISのようです。

なので、件数と科目を表示するコードはこんな感じ。

use v5.10;
use strict;
use warnings;
use utf8;
binmode STDOUT, ':utf8';

my $in_file = 'test.tab';
my $data_ref = load_tab_file( $in_file );

say "件数 = " . scalar(@{$data_ref});

my %hash = ();
foreach my $line (@{$data_ref}) {
    my @tmp = split "\t", $line;
    $hash{$tmp[3]}++;
}

say "--- 科目 ---";
say for (keys %hash);

sub load_tab_file {
    my $file = shift;

    open( my $fh, '<:encoding(shift-jis)', $file ) or die $!;

    local $/ = "\r";
    my @ret = <$fh>;

    close $fh;

    return \@ret;
}

たとえば、仕分けデータを”test.tab”というファイル名で保存して、
これを実行するとこんな感じになる。

$ perl aaa.pl
件数 = 122
--- 科目 ---
新聞図書費
通信費
ソフトウェア


という訳で、
日付と金額等の入力からタブ区切りファイルを書き出して、
取り込みに成功したら続きを書こうと思います。

参考にしたページ

Perl 5.8でUTF-8の文字コードを扱う
http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/perl/perl_utf.html

おしまい。

Leave a Comment