Hi Perl Monks,
There is a real-world application for this, but I'm going to make it simple for the sake of the example.
Let's say I have an array of characters:
my @chars = qw( a b c ? : ! f g )And I have a function called "getUpperCaseChars" that converts those characters to their uppercase equivalents. But for the punctuation, since it has no uppercase equivalent, it returns an undef for those indices instead:
my @upChars = getUpperCaseChars( @chars ); # @upChars is now ( 'A', 'B', 'C', undef, undef, undef, 'F', 'G' )
Now after I've called getUpperCaseChars(), I can determine which ones did not have uppercase equivalents by doing something like this:
my @charsWithNoUpperCase = @chars[grep { !defined @upChars[$_] } 0..$#upChars];
But readability is low on that, so I've changed it to a foreach:
my @charsWithNoUpperCase foreach my $index ( 0..$#upChars ) { push @charsWithNoUpperCase, $chars[$index] if !defined $upChars[$index]; }
So my question is, is using the array slice significantly more efficient?
In reply to Array slice vs foreach and push by chrisburel
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |