# countup1.pl
# 内容 :　同一キーの件数をカウントする（until型） 
# 前提 :　カウントするキーごとに昇順に並べ替えておくこと 
# Copyright (c) 2002-2011 Mitsuo Minagawa, All rights reserved.
# (minagawa@fb3.so-net.ne.jp)
# 使用方法 : c:\>perl countup1.pl
#   

# ファイルのオープン
open(IN1,"input.txt");
open(OUT1,">output.txt");

# 初期値設定
$high_value	=	pack("h8","ffffffff");		#終了判定
$in1_key	=	undef;		#入力キー
@in1		=	undef;		#入力データの配列
$in1_ctr	=	0;			#入力件数
$sv_key		=	undef;		#保存した入力キー
$sum_ctr	=	0;			#合計件数

# １件目のデータ入力
s_in1();
$sv_key	=	$in1_key;

# 主処理
until	($in1_key	eq	$high_value)		{

# キーブレイク時の処理
	if	($sv_key	ne	$in1_key)			{
			s_break();
	}
	$sv_key	=	$in1_key;
	s_in1();
	$sum_ctr++;	
}

# 最終データの処理（入力データがある場合）
if	($in1_ctr	!=	0)			{
	s_break();
}

# データ入力処理
sub	s_in1	{
	if		($line1	=	<IN1>)	{
			chomp($line1);
			@in1	=	split(",",$line1,-1);
			$in1_key	=	$in1[0];
			$in1_ctr++;
	}
	else	{								#入力ファイルが終了のとき
			$in1_key	=	$high_value;		#HIGH-VALUE をセット
	}
}


# 入力キーがブレイク（変化）したときの処理
sub	s_break	{
	$out1	=	join(",",$sv_key,$sum_ctr);
	print	OUT1	"$out1\n";
# $sum_ctrをゼロにしなければ、合計件数ではなく、累計件数になる。
	$sum_ctr	=	0;
}

# ファイルのクローズ
close(IN1);
close(OUT1);
