#!/usr/bin/perl -w # get_char_probability.pl - Don Yang (uguu.org) # # 2015-06-05 use strict; # Initialize zero frequency for each character my @freq = (); $freq[$_] = 0 foreach 0..25; # Get character frequencies while( my $line = <> ) { foreach my $c (unpack 'C*', $line) { if( chr($c) =~ /[a-z]/ ) { $freq[$c - ord('a')]++; } elsif( chr($c) =~ /[A-Z]/ ) { $freq[$c - ord('A')]++; } } } # Get total character count my $size = 0; $size += $_ foreach @freq; unless( $size > 0 ) { die "No alpha characters found in input\n"; } # Output probabilities print '@f = (', "\n"; for(my $i = 0; $i < 26; $i++) { print $freq[$i] / $size, ", # ", chr($i + ord('a')), "\n"; } print ");\n";