The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

 $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文字と見なすのが妥当だと思われるが、現状、空行を返す。