I'm trying to recreate a Perl script in Ruby and have run into a problem.
The perl script has several layered subroutines.  The main entry point 
has code like this:

    Getopt::Long::Configure(pass_through, no_auto_abbrev);
    GetOptions('logfile' => \$logfile, 'log' => \$log, 'leave_tempfiles' 
=> \$leave_tempfiles, 'batch_length=i' => \$batch_length);
    Getopt::Long::Configure(no_pass_through, auto_abbrev);

This sets some global flags that the user may (optionally) set on the 
command line.  Other subroutines called after this perform a straight 
GetOptions call
ie:     GetOptions("a" => \$added, "e" => \$edited, "d" => \$deleted, 
"c" => \$change);  

Well, with Ruby, if I try to have my entry code scan the command-line 
arguments for a --log / -log argument, then when it sees say, a '-c' 
instead, it raises an exception (which I can toss) since it's not part 
of that GetoptLong argument array.
That's all fine and well, but unfortunately, it's also removed the 
argument from ARGV at this point, so the next method that wants to scan 
for >its< command-line arguments (perhaps to parse the -c) won't have 
anything there.
Additionally, the exception thrown by GetoptLang doesn't even contain 
information about what didn't match (or what was removed from ARGV), so 
that I can add it back into argv.

Any suggestions on how I can implement 'passthrough' command-line 
arguments with Ruby?

Thanks,
Patrick Bennett