sub getXCharacterPatterns{ my $str=shift; #what does shift do here? my $pl=shift; #andd here my $slen=length($str); if ($pl>$slen){ print "ERROR: $pl is greater than $slen"; } my %nu_hash=(); #why is this an empty hash? (is he storing patterns in a hash?) my $sstr =""; #why is this an empty string? for(my $i=0;$slen>=$i+$pl; $i++) { $sstr=substr($str,$i,$pl); $nu_hash{$sstr}++; } return \%nu_hash; }