On 5/24/05, Robert Citek wrote:
>
> I found a variation of this in the Perl Nutshell book:
>
> $ perl -le '
> $foo="fee fie foe foo" ;
> while ($foo =~ m/e/g ) {
> push @bar, pos $foo ;
> }
> print join(":", @bar); '
> 2:3:7:11
>
> Is there an equivalent way to do the same using map instead of an
> explicit while loop? I'm guessing not, since map is expecting a list
> and not a scalar, which $foo is.
>
This is Perl, these is always another way :)
my $foo = "fee fie foe foo";
my $sum;
my @bar = map {$sum+=1+length} split(/e/,$foo);
print join(":", @bar[0..$#bar-1]) . "\n";
It is however a bit forced. I would stick to the "while" - much more readable :)
Cheers,
--
Offer Kaye
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>