$0

入力の各行をタブ文字列で列に分割し、各列の sha1 和を求める。
ただし、 sha1和を求める際に、各行について行番号と改行文字を加えている。
 スイッチオプションとして、-p を用いると、各行の sha1 についての
 全行に渡る排他的論理和を出力する。

  2次情報として、計算にかかった秒数と、読み込んだ行数を出力する。
  列数が変わる場合も考慮してある。

想定されている用途例 : 
  * いくつかの列が、全く同じ値を取っていることを確認するため。
  * いくつかの列が、順序を無視すると、全く同じ値を取ることを確認するため。
  * 大きなデータをソートした後に、欠損や不要な汚染が起きていないことの確認のため。

オプション: 
 -p : 各行についてのSHA1ダイジェスト値の全行に渡る排他的論理和を出力する。
 -8 : 各列について8文字幅(4バイト)に縮約した16進値を表示する。20バイトを5バイトごとに切ってxorを取っている。
 -1 : 列数が変動する場合に備え、行番号も内部で付加して計算しているが、それを解除する。

 開発上の注意 :
   sha1値を計算して、符号無し32ビット整数を用いてる。64ビット環境なら問題ないはず。
   もしも、符号無し16ビット整数に変えるなら下記が必要と考えられる。
   unpack 'L5' を unpack 'S10' に変え、"%08x" の2箇所を"%04x" に変更。xor5 を xor10に変更。