I haven't bought
Higher Order Perl yet, but I've looked at the code examples and have been inspired. With that in mind:
# combines two pairs into a longer pair
sub combine_codes_and_descriptions
{
my ($sofar, $next) = @_;
if (!defined($sofar)) {return $next;}
[$sofar->[0] . $next->[0], $sofar->[1] . ", " . $next->[1]];
}
sub multi_dim_reduce
{
# $sofar optional
my ($actionsub, $AoA, $combinesub, $sofar) = @_;
if (@$AoA) {
my $this_array = shift @$AoA;
for my $elem (@$this_array) {
my $subarray = [ @$AoA ];
multi_dim_reduce($actionsub, $subarray, $combinesub,
$combinesub->($sofar,$elem));
}
} else {
$actionsub->($sofar);
}
}
# The main event
@data =
(
[
[1, "Darth Vader"],
[3, "Luke Skywalker"],
[5, "Obi Wan Kenobi"],
],[
[0, "Lighsabre"],
[5, "Blaster"],
[9, "Rocket launcher"],
],[
[10, "Dagobah"],
[14, "Kashyyyk"],
],
);
multi_dim_reduce(sub {my ($c,$d) = @{$_[0]}; print "$c\t$d\n";},
[ @data ],
\&combine_codes_and_descriptions);
--
@/=map{[/./g]}qw/.h_nJ Xapou cets krht ele_ r_ra/;
map{y/X_/\n /;print}map{pop@$_}@/for@/
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.