in reply to Seeking regexp @ARGV arrays Wisdom

I don't really understand what you are trying to do, but the way you use shift and push on @ARGV seems correct to me. Just a simple example (without a mountain of comments making your code much more complicated to decipher):
use strict; use warnings; use v5.14; while (1) { my $current = shift @ARGV; say $current; push @ARGV, $current; say "Hit return or enter 0 to exit"; chomp (my $input = <STDIN>); last if $input eq "0"; } exit 0;
This works fine:
$ perl test_argv.pl one two three one Hit return or enter 0 to exit two Hit return or enter 0 to exit three Hit return or enter 0 to exit one Hit return or enter 0 to exit two Hit return or enter 0 to exit three Hit return or enter 0 to exit one Hit return or enter 0 to exit two Hit return or enter 0 to exit three Hit return or enter 0 to exit 0