in reply to How to get 0 to initialize a value

Others have pointed out that the OPed code seems to work just fine once the
    my $first_novel = $novel_list->[$first_book];
statement is fixed to be
    my $first_novel = $novel_list[$first_book];

Somewhat off-topic, may I suggest that a better approach might be to use a hash:

use strict; use warnings; my @novel_list = <DATA>; chomp @novel_list; my %characters = ( Bink => 'M1, M2, m3, m4, 6, m7, M9, m11, m13, 14, 17, m19, m21, M2 +2, m23, m31, 35, 36, m37, m40, m41', Quan => '0', ); for my $character (sort keys %characters) { my @appearances = split m{ \s* , \s* }xms, $characters{$character}; my $first_book = $appearances[0]; my $first_type = $first_book =~ /^M/ ? 'major' : $first_book =~ /^m/ + ? 'mentioned' : undef; (my $i_first_novel = $first_book) =~ s/\D+//g; my $first_novel = $i_first_novel ? qq{"$novel_list[$i_first_novel]"} : "[$novel_list[$i_first_novel]]" ; print "$first_novel is the first novel '$character' was in. \n"; } __DATA__ Other source A Spell for Chameleon The Source of Magic Castle Roogna Centaur Aisle Ogre, Ogre Night Mare Dragon on a Pedestal Crewel Lye: A Caustic Yarn Golem in the Gears Vale of the Vole Heaven Cent Man from Mundania Isle of View Question Quest The Color of Her Demons Don't Dream Harpy Thyme Geis of the Gargoyle Roc and a Hard Place Yon Ill Wind Faun and Games Zombie Lover Xone of Contention The Dastard Swell Foop Up in a Heaval Cube Route Currant Events Pet Peeve Stork Naked Air Apparent Two to the Fifth Jumper Cable Knot Gneiss Well-Tempered Clavicle Luck of the Draw Esrever Doom Board Stiff Five Portraits Isis Orb Ghost Writer in the Sky
c:\@Work\Perl\monks\Lady_Aleena>perl "A Spell for Chameleon" is the first novel 'Bink' was in. [Other source] is the first novel 'Quan' was in.

Give a man a fish:  <%-{-{-{-<