"be consistent" | |
PerlMonks |
comment on |
( [id://3333]=superdoc: 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 reply to Re: Pattern Finding
by jackdied
|
|