in reply to Loop once on condition 1, many times on cond. 2?

foreach $key ( ($x eq 'key_1') ? keys %my_hash : $x ) { do a bunch of stuff }

UPDATE: Had to reverse the logic of the ?:, thought you wanted it the other way round

Replies are listed 'Best First'.
Re^2: Loop once on condition 1, many times on cond. 2?
by punch_card_don (Curate) on Oct 09, 2008 at 15:23 UTC
    That's certainly much tidier notation.

    The problem with mine is that it loops through all keys no matter what- it just doesn't execute the block of code when not necessary. What I was hoping for is a formula that only loops once when one loop is all that's needed. But I think your tidy notation functions the same as mine, no?




    Time flies like an arrow. Fruit flies like a banana.
      No.

      The expression is evaluated before the loop starts in order to build the list of items over which to iterate,
      and the expression returns either the result of keys or a single scalar depending on whether conditional's condition is true,
      so it either loops for every key or just once.

      No, because the ?: delivers either a list consisting of the single value or all the keys to the 'foreach' loop statement . So if that is only one value, the loop executes only for that single value.

        Excellent, thanks.

        I'll read up on this notation.




        Time flies like an arrow. Fruit flies like a banana.