#!/usr/bin/perl # entropy.pl - Don Yang (uguu.org) # # 02/17/03 while( $#ARGV >= 0 ) { $filename = shift @ARGV; $filesize = 0; @freq = (); open INFILE, "< $filename" or die; while( defined($i = getc(INFILE)) ) { $freq[ord $i]++; $filesize++; } close INFILE; $entropy = 0; for($i = 0; $i < 256; $i++) { if( $freq[$i] ) { $p = $freq[$i] / $filesize; $entropy -= $p * log($p) / log(2); } } print "$filename: $entropy bits\n"; }