Syntactic Confectionery Delight | |
PerlMonks |
Re: Pattern Findingby jackdied (Monk) |
on Sep 12, 2001 at 21:06 UTC ( [id://111955]=note: print w/replies, xml ) | Need Help?? |
This little guy will do want you want. The string can't have spaces, or you'll have to use a different seperator rather than a space. If you wanted it to be bullet proof, you would have to use arrays and do the regexp compares on every element. WARNING: If there is a pattern that is never repeated, this will go into an infinite loop It is not commented, but short enough to be self explanitory (?) #!/usr/bin/perl use strict; use Data::Dumper; my $orig_str = 'helloworldhellohellohihellohiworld'; my @patterns = (); my $str = $orig_str; while (length($str)) { my $len = 1; my $token = substr($str, 0, $len); my $test_p = substr($str, $len); while ($test_p =~ /$token/) { $len++; $token = substr($str, 0, $len); $test_p = substr($str, $len); } $token = substr($str, 0, $len - 1); push @patterns, $token; $token =~ s/ //g; $str =~ s/$token/ /g; $str =~ s/^ *//; } print Dumper(\@patterns);
In Section
Seekers of Perl Wisdom
|
|