1#!/usr/bin/env perl
2use strict;
3use warnings;
4
5use File::Next;
6use List::Util qw(sum);
7use Statistics::Benford;
8
9my $files = File::Next::files({ error_handler => sub {}, }, @ARGV);
10my $stats = Statistics::Benford->new;
11my %freq;
12
13while (defined (my $file = $files->())) {
14    my $size = -s $file or next;
15    my ($digit) = substr $size, 0, 1;
16    $freq{$digit}++;
17}
18
19my %dist = $stats->dist;
20my $sum = sum values %freq;
21
22print "d expected found\n";
23
24for my $digit (sort keys %dist) {
25    my $p = $freq{$digit} ? ($freq{$digit} / $sum) : 0;
26    printf "%d     %.2f  %.2f\n", $digit, $dist{$digit}, $p;
27}
28
29print "\n";
30printf "diff: %.2f\n", scalar $stats->diff(%freq);
31printf "z:    %.2f\n", scalar $stats->z(%freq);
32