#!/usr/bin/perl -w # taipoweracctchecksum -- 計算台灣電力公司之客戶電號之檢算號 # Compute Taiwan Power Company customer account number checksums # Copyright : http://www.fsf.org/copyleft/gpl.html # Author : 積丹尼 Dan Jacobson -- http://jidanni.org/comp/checksums/ # Created On : Jan 2005 # Last Modified On: Sat Jan 15 00:56:41 2005 # Update Count : 86 # 參考 Reference : https://wapp8.taipower.com.tw/naeb200e.asp # 使用例子 Usage example: $ echo 1111111111 | taipoweracctchecksum # 11111111115 use strict; my $limit = 21; while (<>) { chomp; die "$_: 請輸入未冠檢號之電號共十碼如 0000000000" unless /^(\d{2})\d{8}$/; die "$_: 前 \"$1\" 大於 $limit" if $1 > $limit; my ( $c, $f ); for ( split '' ) { map $c += $_, split '', $_ * ( 1 + ( $f = !$f ) ) } printf "$_%d\n", $c % 10; }