knoppix@Microknoppix:~$ perl -Mstrict -MData::Dumper -we '
> my @arr;
> push @{ $arr[ do { my $v = $1 - 1 if m{(\d+)$} } ] }, $_
> for glob q{{red,blue}-{small,medium,large}-{1,2,3,4}};
> print Data::Dumper->Dumpxs( [ \ @arr ], [ qw{ *arr } ] );'
@arr = (
[
'red-small-1',
'red-medium-1',
'red-large-1',
'blue-small-1',
'blue-medium-1',
'blue-large-1'
],
[
'red-small-2',
'red-medium-2',
'red-large-2',
'blue-small-2',
'blue-medium-2',
'blue-large-2'
],
[
'red-small-3',
'red-medium-3',
'red-large-3',
'blue-small-3',
'blue-medium-3',
'blue-large-3'
],
[
'red-small-4',
'red-medium-4',
'red-large-4',
'blue-small-4',
'blue-medium-4',
'blue-large-4'
]
);
knoppix@Microknoppix:~$
####
knoppix@Microknoppix:~$ perl -Mstrict -MData::Dumper -we '
> my $idx;
> my %idxHash =
> map { $_ => $idx ++ }
> glob q{{red,blue}-{small,medium,large}};
> my @arr;
> push @{ $arr[ do { $idxHash{ $1 } if m{^(\w+-\w+)} } ] }, $_
> for glob q{{red,blue}-{small,medium,large}-{1,2,3,4}};
> print Data::Dumper->Dumpxs( [ \ @arr ], [ qw{ *arr } ] );'
@arr = (
[
'red-small-1',
'red-small-2',
'red-small-3',
'red-small-4'
],
[
'red-medium-1',
'red-medium-2',
'red-medium-3',
'red-medium-4'
],
[
'red-large-1',
'red-large-2',
'red-large-3',
'red-large-4'
],
[
'blue-small-1',
'blue-small-2',
'blue-small-3',
'blue-small-4'
],
[
'blue-medium-1',
'blue-medium-2',
'blue-medium-3',
'blue-medium-4'
],
[
'blue-large-1',
'blue-large-2',
'blue-large-3',
'blue-large-4'
]
);
knoppix@Microknoppix:~$
####
knoppix@Microknoppix:~$ perl -Mstrict -MData::Dumper -we '
> my @arr;
> my $idx = -1;
> push @{ $arr [ $_->[ 0 ] ] }, $_->[ 1 ] for
> map { $idx ++; map { [ $idx, $_ ] } glob qq{$_-{1,2,3,4}} }
> glob q{{red,blue}-{small,medium,large}};
> print Data::Dumper->Dumpxs( [ \ @arr ], [ qw{ *arr } ] );'
...