используйте sprintf для генерации строки:
my $casenumber = sprintf("%2s-%8d%04d", $twochars, $date, $increment);
Например, в командной строке:
$ perl -e 'printf("%2s-%8d%04d\n", "aa", "20101211", 2);'
$ aa-201012110002
Что касается сброса вашего счетчика в 1, сохраните переменную с именем $ lastDateдля каждой записи в вашей итерации.Если $ lastDate! = $ CurrentDate, вы сбрасываете свой счетчик на 1.
Например:
# assumes @records contain arrayrefs with relevant info from mysql
# also assumes the data is sorted by date.
my $count = 1;
my $lastDate;
my $currentDate;
for my $record (@records)
{
my $twochars = $record->[0];
my $currentDate = $record->[1];
if($currentDate != $lastDate)
{
$count = 1;
}
my $casenumber = sprintf("%2s-%8d%04d", $twochars, $currentDate, $count++);
$lastDate = $currentDate;
}