Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re: Category List

by Purdy (Hermit)
on Dec 02, 2001 at 07:31 UTC ( #128956=note: print w/replies, xml ) Need Help??

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.


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

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://128956]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (5)
As of 2019-11-20 09:16 GMT
Find Nodes?
    Voting Booth?
    Strict and warnings: which comes first?

    Results (96 votes). Check out past polls.