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