On Sep 21, 2013, at 1:33 PM, "John E. Malmberg" <malmb...@encompasserve.org> 
wrote:
> 
> The wrapper that simulates the shebang only runs it in a way that produces an 
> error message.  I can not find any way to run it that takes advantage of the 
> wrapper and results in useful output.
> 
> All attempts to run perldoc.com as a command instead of as a perl script that 
> I can find just result in it emitting an error message.


OK.  I think I see where we are talking at cross purposes.  I was talking 
exclusively about how the shebang emulation works in the general case by having 
$Config{startperl} prepended to the .com file.  I assumed that perldoc.com 
would work just the same as any other comparable utility in this respect, but 
it doesn't.  Bad assumption on my part.  Sorry about that.

I think you might have been assuming the same thing in reverse, namely that if 
perldoc.com has a problem, there must be a more general problem with the 
shebang emulation.  But I don't think there is.

The following illustrations that the shebang emulation works just fine in the 
general case:

$ type testshebang.com
$ perl 'f$env("procedure")' "''p1'" "''p2'" "''p3'" "''p4'" "''p5'" "''p6'" 
"''p7'" "''p8'"!
$ exit++ + ++$status!=0 and $exit=$status=undef; while($#ARGV != -1 and 
$ARGV[$#ARGV] eq ''){pop @ARGV;}
    eval 'exec perl_root:[000000]Perl.exe -S $0 ${1+"$@"}'
        if 0;

require 5;
print "hello\n";
$ define DCL$PATH SYS$DISK:[]
%DCL-I-SUPERSEDE, previous value of DCL$PATH has been superseded
$ testshebang
hello

But perldoc.com doesn't work that way, as you discovered, and it's because it's 
a pretty thin wrapper around Pod::Perldoc::run.  So there is a bug in 
Pod::Perldoc (specifically Pod::Perldoc::program_name) which makes invalid and 
non-portable assumptions about the name of the file it's running.  As far as I 
can see from a quick look, the only real problem is that it doesn't know what 
to do with the version number, i.e., "perldoc.com;1" is unacceptable, whereas 
"perldoc.com" would be ok.

I have no time for (and not much interest in) pursuing this further, but most 
likely replacing the line in Perldoc.pm that looks like:

    (?: \. (?: bat | exe | com ) )?    # possible extension

with

    (?: \. (?: bat | exe | com | com;\d+ ) )?    # possible extension

would do the trick.  And version numbers on .exe files are also possible of 
course.  So folks interested in this bug might want to report/fix it at 
<https://rt.cpan.org/Public/Dist/Display.html?Name=Pod-Perldoc>.

________________________________________
Craig A. Berry
mailto:craigbe...@mac.com

"... getting out of a sonnet is much more
 difficult than getting in."
                 Brad Leithauser

Reply via email to