Re: your "XXX" block, I've refactored the code thus:
# 0 --> identical element
if ( $which_list == 0 ) {
die "Can't happen" if @indices1 != @indices2;
foreach my $i ( 0 .. $#indices1 ) {
my ( $item1, @offsets ) = @{ $list1_aref->[ $indices1[
+$i] ] };
my ( $item2, $offset ) = @{ $list2_aref->[ $indices2[
+$i] ] };
die unless $item1 eq $item2;
push @offsets, $offset;
push @merged, [ $item1, @offsets ];
}
}
# 1 --> list 1 has an element here
if ( $which_list & 1 ) {
foreach ( @{ $list1_aref }[ @indices1 ] ) {
my ( $item1, @offsets ) = @{ $_ };
push @offsets, undef;
push @merged, [ $item1, @offsets ];
}
}
# 2 --> list 2 has an element here
if ( $which_list & 2 ) {
foreach ( @{ $list2_aref }[ @indices2 ] ) {
my ( $item2, $offset ) = @{ $_ };
my @offsets = map { undef() } 1 .. $offset_width;
push @offsets, $offset;
push @merged, [ $item2, @offsets ];
}
}
I've scrapped the 'elsifs' and used & instead of ==.
-
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.
|