$0
入力をTSVと見なして、同じ列は縦に揃えて空白文字で埋めて出力する。
[オプション] :
-b char ; 間に埋める文字列。未指定なら半角空白 ' ' 。例として -b "-" 。betweenのbのつもり。
-c char ; 列間で、列の直前に入れる文字。未指定なら半角空白 ' ' 。例として -c "|" 。connectorのcのつもり。
-f : ある行が列の数が少ないときに、最も列数の多い行に合わせて、列の数を増やす指定。
-i delim : 区切り文字の変更。未指定なら、タブ文字。(出力は空白文字うめであり、変えない。)
-r N : 最も右側の列を何列について、文字幅の計算の対象外とするかの 値の指定。未指定なら 0。
-s N : (実験的)出力の各セルにおいて、長すぎるセルを可能であれば埋めた空白をさらに幅何文字分(半角相当)まで縮めるか指定。
-x : less に渡す引数(-xによるタブ位置の指定)のみを出力して終了。時には、とても便利。
-D num : このコマンドの動作についてのデモを表示して終了。numは1〜4。(開発上テストでも使う。)
--delcolor : 単に入力の着色(ASCIIエスケープシーケンスによるもの)を除去。テスト機能であり、おまけの機能である。
--right : 右揃えにする。この指定が無いと、左揃えである。
--keep 'CRLF' : Windows形式だと改行文字が CR LF となるが、そのCRの部分を取り除く操作を、このオプション指定だと抑制する(テスト目的などを想定)。
--help : この $0 のヘルプメッセージを出す。 perldoc -t $0 | cat でもほぼ同じ。
--help opt : オプションのみのヘルプを出す。opt以外でも options と先頭が1文字以上一致すれば良い。
開発メモ:
* 行列として変数Cを参照するときに値が未定義の時にどうすれば良いか。
* INT{ALRM}を使って15秒ごとに、一旦出力する機能を付けたい。
* Ctrl+ZやCtrl+Cに対する機能を付けたい。
* -x による less の -xに渡す数の配列を STDERR に出力したい。その場合、2次情報の出力を抑制する -20も実装することになるであろう。
* --rightにおいて、特定の列だけ、または、特定の列以外を右寄せに出来ないだろうか?
* 出力の最後が余分に1行出力されている問題が発生中。
Text::VisualWidth のインスートルがあらかじめ必要である。