Michael G Schwern:
# You can do it with a map without much trouble:
# 
#     my @indexes = map { /condition/ ? $i++ : () } @stuff;

Unless I'm mistaken, that won't work, since $i only gets incremented on
matches.  I think this:

        my @indexes = map { $i++; /condition/ ? $i : () } @stuff;

Will work fine, though.

Or, in the spirit of use-a-foreach-like-a-for (and my favorite WTDI):

        my @indexes = grep { $stuff[$_] =~ /condition/ } 0..$#stuff;

As you might guess, I'm a (not very vocal) proponent of adding a way to
get at a foreach's (or map's or grep's) current index.  (Hmm, can this
be done with XS?  Must research...)

# Its so rare that you work by array index in Perl.  Usually 
# things flow together element by element.  Sort of like how 

Funny, I tend to find myself working by-element fairly often, usually
when I have to remove elements in the middle of a loop--something Perl
doesn't like.  :^(  (Not that I don't understand *why* Perl doesn't
allow it--just that it can be an inconvenience.)

# you rarely handle strings character by character which can 
# severely confuse C programmers.

Well, that's a silly way of working anyway.  ;^)

--Brent Dax <[EMAIL PROTECTED]>
@roles=map {"Parrot $_"} qw(embedding regexen Configure)

"If you want to propagate an outrageously evil idea, your conclusion
must be brazenly clear, but your proof unintelligible."
    --Ayn Rand, explaining how today's philosophies came to be

Reply via email to