in reply to Category List

Well, I'm not sure if I'm following you correctly, but if you have an even amount of categories in your array, I would simply create a while loop, like so:

my @categories = qw ( Horror Sci-Fi Comedy Action ); while ( @categories ) { my ( $oval ) = shift @categories; # odd value my ( $eval ) = shift @categories; # even value printf ("%15s %15s\n", $oval, $eval ); }

You may also want to optimize that a bit and/or check out this node.

Jason

Replies are listed 'Best First'.
Re:x2 Category List
by grinder (Bishop) on Dec 03, 2001 at 03:19 UTC
    The first optimisation would be to make the script work correctly :). As things stands, 'Horror' is assigned to $_, and thrown away at the end of the loop. 'Sci-Fi' and 'Comedy' are assigned to $oval and $eval respectively and printed out.

    The second time around, $_ is assigned 'Action', $oval and $eval each cop an undef, and a mess gets printed out.

    So the first thing you want to do is:

    for my $oval( @categories ) { my $eval = shift @categories; printf ("%15s %15s\n", $oval, $eval ); }

    You might want to consider using each, but that would be somewhat obfuscated. That is left as an exercise for the reader.

    update: oops! I completely misread the code. That's a while, not a foreach you had. In which case it works fine. All I can say in my defense is that it's an unusual construct. Which may be a warning flag for maintainability.

    grinder wanders off to bed

    --
    g r i n d e r
    just another bofh