Вместо использования grep
просто зациклите массив и сохраните переменную count:
for my $idx( 0 .. $#{ $arr{monsters} } ) {
if ( $arr{monsters}[$idx] eq 'Test2' ) {
print "Kills = $arr{kills}[$idx]\n";
last;
}
}
Однако лучшим способом справиться с этим может быть переосмысление структуры данных. Вместо параллельных массивов рассмотрим массив хэшей:
my @monsters = ( { name => 'Test', kills => -1 }, { name => 'Test2', kills => -2 } );
Теперь, чтобы найти конкретного монстра:
my ( $monst ) = grep { $_->{name} eq 'Test2' } @monsters;
print $monst->{kills};
Это позволит вам выполнять поиск по имени и одинаково легко убивать. Если вы всегда будете искать по имени, то лучше было бы создать хеш с именем и указать количество убийств (как подсказывает @dmah).
Еще лучший способ справиться с этим - заключить монстров в класс и заставить каждый объект отслеживать свои собственные убийства, но я оставлю это в качестве упражнения для ОП.