foreach $chapter ( sort {$a <=> $b} keys ($bible{$qbook}) )
{
print ("joining chapter $chapter verses\n");
#my $allverses = join("\n\n",$bible{$qbook}{$chapter}{'verses'});
#print $allverses . "\n\n";
my $i;
print "$#{$bible{$qbook}{$chapter}{'verses'}} verses\n";
foreach $i (0..$#{$bible{$qbook}{$chapter}{'verses'}})
{
print "$bible{$qbook}{$chapter}{'verses'}[$i]\n\n"; #line 270
}
}
I have not had much time to look at your post (it is kinda big; a small, self-contained, runnable code example will help your fellow monks find problems, and may very well help you to find problems just by preparing it!) and may not be able to do so thoroughly today, but a few things strike me about the code quoted above, which includes the problematic line 270:
- The expression $#{$bible{$qbook}{$chapter}{'verses'}} will yield -1 if the referenced array is empty. That this is the case is shown by the following print statement
print "$#{$bible{$qbook}{$chapter}{'verses'}} verses\n";
which produces "-1 verses". The expression 0 .. -1 produces an empty range, which means that the loop body, line 270, is never executed. You have to go back and find where this array was emptied, or else why nothing was ever put into it in the first place.
- An expression like $#array or $#$array_reference evaluates to the highest array index, not to the number of elements, verses in this case, in the array.
- A stylistic point: a loop like
foreach $i (0..$#{$bible{$qbook}{$chapter}{'verses'}})
{
print "$bible{$qbook}{$chapter}{'verses'}[$i]\n\n";
}
is, IMHO, better written as
foreach my $verse (@{$bible{$qbook}{$chapter}{'verses'}}) {
print $verse, "\n\n";
}
Update: print statement in 'better' for-loop changed from print "$verse\n\n"; to print $verse, "\n\n"; and loop variable $verse made lexical my $verse instead.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.