The List::MoreUtils module indicates that you use the variables $a and $b when supplying the BLOCK that goes with the pairwise>
This is probably a bug in List::Util.
Turning off warnings globally is probably not a good idea, however you could do something like this:
{
no warnings 'once';
return join("_", @monsters) if @monsters && List::Util::reduce { $a && $b // 0 > 0 } 1,@monsters;
}
This would turn off the relevant warning category for that part of the code only.