$0 

入力データを各行を区切り文字ごとに区切って、文字の長さに変換して出力する。
行末の改行文字は特にオプションで指示のない限り、長さ計算の対象ではない。

オプション :

 -i str : 区切り文字の変更。
 -l 0 :  各行の全体の長さを算出。行末文字を含めない。
 -l + :  各行の全体の長さを算出。行末文字を含めた長さとする。

 -s 0 :  空白文字を除去して処理する。i.e. 非空白文字のみが処理対象
 -s 1 :  非空白文字を除去して処理する。 i.e. 空白文字のみが処理対象。(1の部分は0以外の何でも良い)
 
 -u   :  utf-8 とみなして、長さを計算する。そうでなければ、単純なバイト長になる。
 -v   :  utf-8 の文字幅で長さを計算する(半角は1、全角は2)。(visual-width)

 -C 0 :  上記の処理で0を与える列の数を数える。(columns count)
 -C 0b :  上記の処理で0を与える列の最初の位置を与える。無ければ0。  
 -C 0e :  上記の処理で0を与える列の最後の位置を与える。無ければ0。  
 -C 0be :  上記の処理で0を与える列の最初と最後の位置を与える。無ければ0。  
 -C -0 :  上記の処理で0を与えない列の数を数える。-0でなくて0-の2文字も可。
 -C -0b :  上記の処理で0を与えない列の最初の位置を与える。無ければ0。  
 -C -0e :  上記の処理で0を与えない列の最後の位置を与える。無ければ0。  
 -C -0be :  上記の処理で0を与えない列の最初と最後の位置を与える。無ければ0。  
 -C 1 :  列の数を数える。(1の部分は実際には0または-0で無ければ何でも良い)
 -c : これは -C 1 と同じ(列の数を数える)。

 -=   :  1行目を(ヘッダと見なして)そのまま出力する。
 -1   :  各行について、元の文字列を右側に付加する。
 -@   :  ファイル名を行末に出力。(output filename)
 -^   :  ファイルを読み終わった後に、ファイル名を出力する。"^(タブ文字)ファイル名" が出力される。
 -!  : フラッシュする。バッファに貯めない。 

 -f 'Ns' : Nは数字でsは文字列。Nで固定長で数を表示し、区切り文字がsとなる。溢れた場合は*を表示
 

 --help : この $0 のヘルプメッセージを出す。  perldoc -t $0 | cat でもほぼ同じ。
 --help opt : オプションのみのヘルプを出す。opt以外でも options と先頭が1文字以上一致すれば良い。

ヒント:

$0 -= some.tsv | colsummary -= とすると、長さの分布が得られる。

開発上のメモ: * セル中の空白文字を無視する様な設定を実装したい。 * 正規表現で無視する文字列を指定できるようにしたい。 * Unicodeの全角空白はきちんと処理をするはず。 * 空行に対して、1列目を0文字と見なすのが妥当だと思われるが、現状、空行を返す。