#!/usr/bin/perl
# taipoweracctchecksum -- 計算台灣電力公司之客戶電號之檢算號
# Compute Taiwan Power Company customer account / meter number checksums
# Copyright       : https://www.gnu.org/licenses/gpl.html
# Author          : 積丹尼 Dan Jacobson -- https://www.jidanni.org/comp/checksums/
# Created On      : Jan 2005
# Last Modified On: Wed Jul 24 10:49:56 2019
# Update Count    : 105
# 使用例子 Usage example: $ echo 1111111111 | taipoweracctchecksum
# 11111111115
use strict;
use warnings FATAL => 'all';
my $limit = 21;
while (<>) {
    chomp;
    die
      "$_: 請輸入未冠檢號之電號共十碼如 1234567890 或 12-34-5678-90"
      unless /^(\d)(\d)-(\d)(\d)-(\d)(\d)(\d)(\d)-(\d)(\d)$/
      || /^(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)$/;

    die "$_: 前 \"$1$2\" 大於 $limit" if "$1$2" > $limit;
    my ( $c, $f );
    for ( @{^CAPTURE} ) {
        map $c += $_, split '', $_ * ( 1 + ( $f = !$f ) );
    }
    printf "$_" . ( /-/ ? "-" : "" ) . "%d\n", $c % 10;
}
