#!/usr/local/bin/perl # # # This is pangram.pl # # This script searches for 'pangrammatic windows', i.e. # minimal length strings of characters containing all 26 letters. # # The input text should be only contain A-Za-z, i.e., no punctuation, no spaces. # # author: Matthew M. Conroy # # www.madandmoonly.com/doctormatt # # # print("Input file name: "); chop($infilename=); print"\n"; print("Starting position: "); chop($start=); print"\n"; open(IN,$infilename) || die "Cannot open $infilename for input!"; open(STD,); while () { ### read a line from the input file to $_ $search = $_; ### set $search to be the single line of the file } # initialize $record $record = 1000 ; print "hup...\n"; %alphabet = ('a',0,'b',0,'c',0,'d',0,'e',0,'f',0,'g',0,'h',0,'i',0,'j',0,'k', 0,'l',0,'m',0,'n',0,'o',0,'p',0,'q',0,'r',0,'s',0,'t',0,'u',0,'v',0, 'w',0,'x',0,'y',0,'z',0); $j=0; #$record=length($search); for($position=$start; $position0)) { $letter = lc(substr($search,$j,1)); if ($alphabet{$letter}==0) { --$lettersLeft; } ++$alphabet{$letter}; ++$j; } } else { --$alphabet{lc(substr($search,$position-1,1))}; } if (($j