in reply to Is there an array for $1,$2,$3... or some alternative ?

There isn't an array, but there are @- and @+ which store offsets. But I prefer to use symbolic references in this case. For instance, to get an array of all the matches1:
my @matches = map {;no strict 'refs'; $$_} 1 .. $#-;

1You can not always capture the return values of the match and get the same effect.