# 標準入力から読みこんだファイルの書式が
# 「樹種   直径2001年   直径2002年」と仮定する．
# 読みこんだ行に成長量 (= 直径2002 - 直径2001) を加えて出力し，
# 断面積合計もいっしょに計算していって最後に表示する．

# BA とかいう指標計算専用のサブルーチン (C 言語でいう関数)
sub calc_ba {
        my ($dbh) = @_;
        $ba = $dbh * $dbh * 3.1416 * 0.25;
        return $ba;
}

# まとめて初期化
($total_ba_2001, $total_ba_2002) = (0.0, 0.0);

# ファイル読みこんで計算するループ
while (<>) { # 入力が続いてるかぎり繰りかえす
        chomp; # 行末の改行マークを削除
	next if m/^#/; # 行頭が # だったらその行はとばす
        ($species, $dbh2001, $dbh2002) = split; # 行の分割・代入
        $growth = $dbh2002 - $dbh2001; # 成長量の計算
        # 表示
        print "$species  $dbh2001\t$dbh2002\t";
	printf "%.2f\n", $growth;            # 書式つき出力
        # BA なる指標の計算していく
        $total_ba_2001 += calc_ba($dbh2001); # サブルーチン calc_ba
        $total_ba_2002 += calc_ba($dbh2002); # を呼び出している
}
# 書式つき出力 printf を用いる
print  "----------------------------\n";
printf "TBA  %.2e   %.2e\n", $total_ba_2001, $total_ba_2002;
