Question: I want a Perl script to accept wildcards (foo-\*.ba?) for file names (which are then processed for a whole directory subtree).

Of course, I can tell the users of my script to quote the argument ('foo-\*.ba?'), but this is not really elegant - the wildcard method is meant as a user-friendly alternative to passing regexes (which are accepted, too, and which, of course, *must* be quoted). The trouble is, that the shell (bash, in my case) expands the command line to the files matching the wildcard pattern in the current directory, so my poor script gets @ARGV preset with whatever the bash found (typically nothing, or a bunch of foo-lotsof.baz etc.).

Is there a copy of bash's unexpanded command line anywhere?

Answer: 
Please don't *try* to work around this. Changing how arguments are interpreted is done by the user in their choice of quoting. Even if you can (and I know there are hooks in bash that I know nothing about that may make it possible) you are not going to provide a better user experience this way, you will provide a worse.
I'm afraid there is no simple way around this. Bash and other shells expand wildcards before executing a command. That's why you have to quote parameters to `find -name '*.txt'`—if you don't, bash will try to expand the wildcard and you get not the results you wanted.