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