On 9/21/2013 12:48 PM, Craig A. Berry wrote:

On Sep 21, 2013, at 11:02 AM, John E. Malmberg <malmb...@encompasserve.org> 
wrote:

On 9/20/2013 8:05 PM, Craig A. Berry wrote:


On Sep 20, 2013, at 6:01 PM, John E. Malmberg
<malmb...@encompasserve.org> wrote:

After all, if you are going to always use Perl to invoke it, why
add the hack to make it work as a command file?

Because you may not use Perl to invoke it. You may invoke it with
DCL  which will then invoke Perl. You can invoke it by putting it in the
command tables, or by setting up a foreign command, or by placing it in
a directory listed in DCL$PATH. Any and all of which can make "perldoc"
run perl_root:[utils]perldoc.com as a command procedure (which then
re-runs itself using Perl). That's about as close to having a shebang
line as you're going to get on VMS.

I would agree with all of that, except that this is what you get
when  you try running it as a command procedure:

LION> @perl_root:[utils]perldoc
You called the perldoc command with a name that I didn't recognize.

Running it explicitly with "@" syntax is not one of the options I mentioned.

Using DCL$PATH gives the same result as using the "@" syntax.

Using a foreign command to run the perldoc.com is the same as using either DCL$PATH or the "@" syntax.

I have never seen command tables run a command script or know of a way to configure them to do so.

I can not see any way to run perldoc.com with out passing it as a script to be run from Perl and work. And in that case, the shebang simulation is ignored.

And even more curious, why add a hack to make look like it should
work as a command file with out actually making it work?

Seems to be working just fine and as designed.

Just printing an error message and exiting is how it was designed?

It was designed to be run as a command, not but running it with "@".
When you don't use it the way it was designed to work, it in fact
(unsurprisingly) doesn't work.  Most likely with enough effort it
could be made to work that way as well, but it was never intended to,
and I don't see the value of it.

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.

The perldoc.com is not working the way that you describe because it is testing to see what the name of the script is. I do not know if that change happened after the shebang simulation was added.

Since it has been run as a perl script by the foreign command, it has not been obvious that that running it standalone is not working.

If the shebang simulation worked, then a simpler foreign command could be used.

Regards,
-John

Reply via email to