- 论坛徽章:
- 145
|
回复 1# gr33n
$ cat glob.pl
use strict;
use warnings;
my $sLimit = 10;
my $sGlob_cnt;
sub glob_limit{
my($raData, $sLimit, $sNow, $sRet) = @_;
$sNow = 0 if(! defined $sNow);
$sRet = "" if(! defined $sRet);
my $sKey = "";
if(scalar(@{$raData}) == $sNow){
$sGlob_cnt++;
return $sRet;
}
if($sNow % 2 == 0){
return glob_limit($raData, $sLimit, $sNow+1, $sRet . $raData->[$sNow]);
}
my @aRet = ();
foreach(split("",$raData->[$sNow])){
push @aRet, glob_limit($raData, $sLimit, $sNow+1, "$sRet$_");
return @aRet if($sGlob_cnt >= $sLimit);
}
return @aRet;
}
while(<DATA>){
chomp;
print "$_\n";
my @aData = split /[\[\]]/;
$sGlob_cnt = 0;
my @aLimit = glob_limit(\@aData, $sLimit);
print join("\n", @aLimit), "\n";
}
__DATA__
A[BC]D[ABC]DA[BC]D
[BCA][ADB]DAA[BC]
A[BC]D[AC]
A[BC]D[AC]DAABACDA[AC]DDACA[BC]D[AC]DAAA[BC]DDDACB[AC]DAABCCD[AC]DCCA[BC]D[AC]DCA[BC]DACDA[BC]D[ABC]DA[BC]D[AC]DABCD[ACB]DA[BC]DACCDABCD[DC]DA[BCA]DDABCCBB
|
|