You are populating the regex slot with a reference to an array. If you change the contents of the array and assign the reference to it to the second object's slot, the reference will stay the same. Either declare a new
my array in the loop for each iteration, or use an anonymous array:
# Either:
my @regexes = ...;
$newp->regex(\@regexes);
# Or:
$newp->regex([@regexes]);
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]