#use warnings;
@iparray=("the","the");
@sortedarray=sort(@iparray);
my @oparray;
my $lowerlimit=0;
my $upperlimit;
my $count=0;
my $inc=1;
my $mat=0;
my $matchedstring;
sub splitter
{
if($mat==0)
{
$lowerlimit=$lowerlimit+1;
$count=$lowerlimit;
func();
}
else
{
$matchedstring=substr($sortedarray[$count-1],0,$mat);
my $temp=$upperlimit;
while($temp>=$lowerlimit)
{
$word=substr($sortedarray[$temp],$mat,length($sortedarray[$temp]));
if($word eq "")
{
push @oparray,"\\s";
}
else
{
push @oparray ,$word;
}
$temp--;
}
print @oparray;
if($upperlimit==scalar(@sortedarray))
{
print "All the words are parsed";
last;
}
else
{
$lowerlimit=$upperlimit+1;
$count=$lowerlimit;
$inc=1;
func();
}
}
}
sub func
{
if(($sortedarray[$count+1]) eq "\0")
{
last;
}
$base=substr($sortedarray[$count],0,$inc);
$match=substr($sortedarray[$count+1],0,$inc);
print("\n",$base," ",$match);
$count++;
if($base ne $match)
{
if($sortedarray[$count-1] eq $sortedarray[$lowerlimit])
{
$mat=$inc-1;
print $mat;
splitter();
}
else
{
$inc++;
$count=$lowerlimit;
func();
}
}
else
{
$upperlimit=$count;
func();
}
}
func();
I3VzZSB3YXJuaW5nczsKQGlwYXJyYXk9KCJ0aGUiLCJ0aGUiKTsKQHNvcnRlZGFycmF5PXNvcnQoQGlwYXJyYXkpOwpteSBAb3BhcnJheTsKbXkgJGxvd2VybGltaXQ9MDsKbXkgJHVwcGVybGltaXQ7Cm15ICRjb3VudD0wOwpteSAkaW5jPTE7Cm15ICRtYXQ9MDsKbXkgJG1hdGNoZWRzdHJpbmc7CnN1YiBzcGxpdHRlcgp7CglpZigkbWF0PT0wKQoJCXsKCQkkbG93ZXJsaW1pdD0kbG93ZXJsaW1pdCsxOwoJCSRjb3VudD0kbG93ZXJsaW1pdDsKCQlmdW5jKCk7CgkJfQoJZWxzZQoJCXsKCQkkbWF0Y2hlZHN0cmluZz1zdWJzdHIoJHNvcnRlZGFycmF5WyRjb3VudC0xXSwwLCRtYXQpOwoJCW15ICR0ZW1wPSR1cHBlcmxpbWl0OwoJCXdoaWxlKCR0ZW1wPj0kbG93ZXJsaW1pdCkKCQkJewoJCQkkd29yZD1zdWJzdHIoJHNvcnRlZGFycmF5WyR0ZW1wXSwkbWF0LGxlbmd0aCgkc29ydGVkYXJyYXlbJHRlbXBdKSk7CgkJCWlmKCR3b3JkIGVxICIiKQoJCQkJewoJCQkJcHVzaCBAb3BhcnJheSwiXFxzIjsKCQkJCX0KCQkJZWxzZQoJCQkJewoJCQkJcHVzaCBAb3BhcnJheSAsJHdvcmQ7CgkJCQl9CgkJCSR0ZW1wLS07CgkJCX0KCQlwcmludCBAb3BhcnJheTsKCQlpZigkdXBwZXJsaW1pdD09c2NhbGFyKEBzb3J0ZWRhcnJheSkpCgkJCXsKCQkJcHJpbnQgIkFsbCB0aGUgd29yZHMgYXJlIHBhcnNlZCI7CgkJCWxhc3Q7CgkJCX0KCQllbHNlCgkJCXsKCQkJJGxvd2VybGltaXQ9JHVwcGVybGltaXQrMTsKCQkJJGNvdW50PSRsb3dlcmxpbWl0OwoJCQkkaW5jPTE7CgkJCWZ1bmMoKTsKCQkJfQoJCX0KfQpzdWIgZnVuYwp7CglpZigoJHNvcnRlZGFycmF5WyRjb3VudCsxXSkgZXEgIlwwIikKCXsKCWxhc3Q7Cgl9CgkkYmFzZT1zdWJzdHIoJHNvcnRlZGFycmF5WyRjb3VudF0sMCwkaW5jKTsKCSRtYXRjaD1zdWJzdHIoJHNvcnRlZGFycmF5WyRjb3VudCsxXSwwLCRpbmMpOwoJcHJpbnQoIlxuIiwkYmFzZSwiICIsJG1hdGNoKTsKCSRjb3VudCsrOwoJaWYoJGJhc2UgbmUgJG1hdGNoKQoJCXsKCQlpZigkc29ydGVkYXJyYXlbJGNvdW50LTFdIGVxICRzb3J0ZWRhcnJheVskbG93ZXJsaW1pdF0pCgkJCXsKCQkJJG1hdD0kaW5jLTE7CgkJCXByaW50ICRtYXQ7CgkJCXNwbGl0dGVyKCk7CgkJCX0KCQllbHNlCgkJCXsKCQkJJGluYysrOwoJCQkkY291bnQ9JGxvd2VybGltaXQ7CgkJCWZ1bmMoKTsKCQkJfQoJCX0KCWVsc2UKCQl7CgkJJHVwcGVybGltaXQ9JGNvdW50OwoJCWZ1bmMoKTsKCQl9Cn0KZnVuYygpOwo=