in reply to The Useless Master 4000

I think if you tested at the end of the loop, not the beginning, you would not have the problem with $op being undefined the first time.
my $op; do { ... } until ($op =~/Q/i);
because you really do want it to go through once.

Also, instead of

if ($op =~/Q/i) { print "Just hit enter to shuffle though all prompts\n"; }
which annoys the user with a last useless pass, just say
last if $op =~ /Q/i;
And then you don't even need the test at the end (or beginning) at all.

Also, are you aware of the ++ operator?

Basically, this is a specialized grep. That's a good use for Perl, in general.

—John