<?xml version="1.0" encoding="windows-1252"?>
<node id="554423" title="Re: possible combinations in sequence" created="2006-06-09 00:38:42" updated="2006-06-08 20:38:42">
<type id="11">
note</type>
<author id="533863">
roboticus</author>
<data>
<field name="doctext">
[id://546129]:&lt;p&gt;
Here's my stab at it.  I took out the hash because my method doesn't generate duplicates.  Instead I just return the list of results:&lt;p&gt;
&lt;code&gt;
#!/usr/bin/perl -w
use strict;
use warnings;

# initial source in sequence order
my $source = 'horse:cow:dog:cat';

function($source);

# and now the results
foreach (function($source)) {
    print "$_\n";
}

# generate array of combinations
sub function {
    my @t = split /:/, shift;
    my @res=(shift @t);
    for my $i (@t) {
        @res=($i, @res, map{$_.':'.$i} @res);
    }
    return @res;
}
&lt;/code&gt;
&lt;b&gt;UPDATE:&lt;/b&gt; I didn't benchmark it because I've never used that module before.  (I'll have to go install it and read up on it.)  But I submitted it because I suspect that generating the strings from components might be faster than removing chunks.   Any benchmarking ninjas out there wanna help me out?&lt;p&gt;
--roboticus</field>
<field name="root_node">
554374</field>
<field name="parent_node">
554374</field>
</data>
</node>
