[za-pm] 0..$#input_numbers ???
Anne Wainwright
anotheranne at fables.co.za
Tue Apr 20 14:25:37 PDT 2010
Hi,
As usual, writing a clear email about a problem has wrung most of the
answer out of the apparent fog. Nevertheless ....
From page 59 of INTERMEDIATE PERL (alpaca book)
1 my @input_numbers = (1, 2, 4, 8, 16, 32, 64);
# $len = @input_numbers;
2 my @indices_of_odd_digit_sums = grep {
3 my $number = $input_numbers[$_];
4 my $sum;
5 $sum += $_ for split //, $number;
6 $sum % 2;
7 } 0..$#input_numbers; # OR 0..$len;
8 print "\n\t the input nos. @input_numbers";
9 print "\n\t the index nos. @indices_of_odd_digit_sums of the
odd_digit_sums\n\n";
From line 7, just where does the syntax of $#input_numbers come from?
<Notes, not $#$input_numbers as I might have expected in my innocence>
The only ref to $# that I find is a deprecated alternative to printf
listed in LEARNING PERL (2nd edn. p.134). This evaluates to the same
as my $len but must be the only place in perl where # is anything
other than a comment marker.
I can uncomment the line after line 1 and replace the syntax as
commented on line 7, which would be my way and it works fine
0..$input_numbers also works but, as you would know, generates minor
warnings.
How would I get a non-deprecated alternative that would not entail
declaring the scalar $len and not generate any warnings and without
code revision before line 7.
bestest
Anne
More information about the Za-pm
mailing list