use warnings;
my @iparray=("and","rat","picture","pick","pack");
my @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 "")
{
}
else
{
}
$temp--;
}
if($upperlimit==scalar(@sortedarray)) {
print "All the words are parsed"; last;
}
else
{
$lowerlimit=$upperlimit;
$count=$lowerlimit;
$inc=1;
func();
}
}
}
sub func
{
$base=substr($sortedarray[$count],0,$inc); if (defined $sortedarray[$count+1]) {
$match=substr($sortedarray[$count+1],0,$inc) ; }
else
{
$count = $lowerlimit;
$inc++;
#func();
}
print("\n",$base," ",$match); $count++;
if($base ne $match)
{
if(($count-1) == $lowerlimit)
{
$mat=$inc-1;
splitter();
}
else
{
$inc++;
unless(($count) == $upperlimit)
{
$count=$lowerlimit;
func();
}
}
}
else
{
$upperlimit=$count;
func();
}
}
func();
dXNlIHdhcm5pbmdzOwpteSBAaXBhcnJheT0oImFuZCIsInJhdCIsInBpY3R1cmUiLCJwaWNrIiwicGFjayIpOwpteSBAc29ydGVkYXJyYXk9c29ydChAaXBhcnJheSk7Cm15IEBvcGFycmF5OwpteSAkbG93ZXJsaW1pdD0wOwpteSAkdXBwZXJsaW1pdDsKbXkgJGNvdW50PTA7Cm15ICRpbmM9MTsKbXkgJG1hdD0wOwpteSAkbWF0Y2hlZHN0cmluZzsKc3ViIHNwbGl0dGVyCnsKCWlmKCRtYXQ9PTApCgkJewoJCSRsb3dlcmxpbWl0PSRsb3dlcmxpbWl0KzE7CgkJJGNvdW50PSRsb3dlcmxpbWl0OwoJCWZ1bmMoKTsKCQl9CgllbHNlCgkJewoJCSRtYXRjaGVkc3RyaW5nPXN1YnN0cigkc29ydGVkYXJyYXlbJGNvdW50LTFdLDAsJG1hdCk7CgkJbXkgJHRlbXA9JHVwcGVybGltaXQ7CgkJd2hpbGUoJHRlbXA+PSRsb3dlcmxpbWl0KQoJCQl7CgkJCSR3b3JkPXN1YnN0cigkc29ydGVkYXJyYXlbJHRlbXBdLCRtYXQsbGVuZ3RoKCRzb3J0ZWRhcnJheVskdGVtcF0pKTsKCQkJaWYoJHdvcmQgZXEgIiIpCgkJCQl7CgkJCQlwdXNoIEBvcGFycmF5LCJcXHMiOwoJCQkJfQoJCQllbHNlCgkJCQl7CgkJCQlwdXNoIEBvcGFycmF5ICwkd29yZDsKCQkJCX0KCQkJJHRlbXAtLTsKCQkJfQoJCXByaW50IEBvcGFycmF5OwoJCWlmKCR1cHBlcmxpbWl0PT1zY2FsYXIoQHNvcnRlZGFycmF5KSkKCQkJewoJCQlwcmludCAiQWxsIHRoZSB3b3JkcyBhcmUgcGFyc2VkIjsKCQkJbGFzdDsKCQkJfQoJCWVsc2UKCQkJewoJCQkkbG93ZXJsaW1pdD0kdXBwZXJsaW1pdDsKCQkJJGNvdW50PSRsb3dlcmxpbWl0OwoJCQkkaW5jPTE7CgkJCWZ1bmMoKTsKCQkJfQoJCX0KfQpzdWIgZnVuYwp7CgkkYmFzZT1zdWJzdHIoJHNvcnRlZGFycmF5WyRjb3VudF0sMCwkaW5jKTsKCWlmIChkZWZpbmVkICRzb3J0ZWRhcnJheVskY291bnQrMV0pCgl7CgkJJG1hdGNoPXN1YnN0cigkc29ydGVkYXJyYXlbJGNvdW50KzFdLDAsJGluYykgOwoJfQoJZWxzZQoJewoJCSRjb3VudCA9ICRsb3dlcmxpbWl0OwoJCSRpbmMrKzsKCQlwcmludCAkaW5jOwoJCSNmdW5jKCk7Cgl9CglwcmludCgiXG4iLCRiYXNlLCIgIiwkbWF0Y2gpOwoJJGNvdW50Kys7CglpZigkYmFzZSBuZSAkbWF0Y2gpCgkJewoJCWlmKCgkY291bnQtMSkgPT0gJGxvd2VybGltaXQpCgkJCXsKCQkJJG1hdD0kaW5jLTE7CgkJCXByaW50ICRtYXQ7CgkJCXNwbGl0dGVyKCk7CgkJCX0KCQllbHNlCgkJCXsKCQkJJGluYysrOwoJCQlwcmludCAkaW5jOwoJCQl1bmxlc3MoKCRjb3VudCkgPT0gJHVwcGVybGltaXQpCgkJCXsKCQkJCSRjb3VudD0kbG93ZXJsaW1pdDsKCQkJCWZ1bmMoKTsKCQkJfQkJCQkKfQoJCX0KCWVsc2UKCQl7CgkJJHVwcGVybGltaXQ9JGNvdW50OwoJCWZ1bmMoKTsKCQl9Cn0KZnVuYygpOwo=