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

  入力の各行について(行末の改行文字は除去して)、SHA1ハッシュ値を求め、先頭4バイト(32ビット)を 0〜2^32-1の整数に変換し、
  全行についての、総和を求める。

  オプション :

    -1 : 各行について、加算対象の整数に対して-2^31を加算し最後に2^32で割ってsqrt(12)をかけ算して、ある種の正規化を行う。異なるn行を処理をするとN(0,n)に従う分布になる。
      -1 により計算される値の2乗は、同じ内容の行が$n_i$行出現するとすると、近似的に、$n_i^2$の総和を自由度の値とするような、カイ二乗分布に従う。
      -1 のオプションによる正規化により、出力された数の2乗は、2個のデータセットに対する差は、異なる内容の行を自由度とするカイ二乗分布に近似的に従うように分布する。
      -1 のオプションで出力される数は、全く同じような内容の行が多数現れた場合の挙動は、かなり異なるようになるので、解釈に注意が必要である。

    -2 : -1 が指定されている場合に、その場合の出力値と共に、それを2乗した値も出力する。

    -h str ; 各行の末尾に str を付加して、ハッシュ値を計算するようにする。(何十回も異なる文字列の付加を反復すれば、出力値の分布から、統計が正確になる。)
    -t str ; 各行の末尾に str を付加して、ハッシュ値を計算するようにする。(何十回も異なる文字列の付加を反復すれば、出力値の分布から、統計が正確になる。)
   
    -: ; 途中の各行の計算過程も出力する。
    -q : 処理した行数などの2次情報を出力しない。