<[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > I think this analysis is correct. Maybe one should check the > first character of the command, and only redefine SYS$COMMAND > if the command doesn't start with an '@'. > ... > ... > That's certainly true....IIRC, the reason that these definitions are > /user mode is for error message handling when spawning a subprocess > that runs Perl. Again, we could do some special-case treatment of > the logicals when the command starts with a '@'. It's a minor change > to VMSPIPE.COM, and sounds like a good idea. > > > Here's the message to look at: > http://www.xray.mpe.mpg.de/mailing-list/vmsperl/2000-03/msg00114.html > from ages ago when this stuff first started being looked at. The following > month or so of vmsperl traffic has a lot of the early piping discussion. > > The "prior state" of the piping was much like you describe; a simple use > of LIB$SPAWN. Please note the "problems with existing code" paragraph. > > The current state of Perl's i/o is to redefine SYS$INPUT, etc. in "user" > mode to reflect command-line (or Perl open/close) redirection. If the > pipe doesn't explicitly redirect, then the subprocess will inherit these > redefined values. > > > Just to get another plug in for the C RTL, really this is easier to handle > > using the vfork()/exec() calls. The current version of the exec calls > > support both DCL and executable files. It also supports the use of the > > VAXC$PATH logical that allow for a more UNIX like PATHing environment. So > > That's nice. I run VMS6.2 and don't have a working vfork, nor a path. > Last I heard, there's even some VMS5 systems running Perl. We could > certainly have an #ifdef based on VMS version that selects CRTL > piping or our "roll our own" piping.
I'm perfectly fine with putting in the check for @ in the VMSPIPE.COM file. All I really wanted was to solve my one issue were I couldn't spawn off a script and have it read from the terminal. I have just recently had to deal with all this process stuff on VMS and UNIX and thought I'd try to encourage moving towards the C RTL as it has solved many issues for me. I also don't have to support anything before 7.3-1 and as such assume certain things. I definitely think that using an #ifdef to start encorperating more of the C RTL in the code would be a good thing. Right off the top of my head I'd say system() would be a good canidate. I tried looking through the code to see what would be required to get that changed but I don't know what we can and can't change very easily. My first guess was to try to make the change in the higher levels in say the PP functions, but those functions aren't commented very well and I don't who maintains that file. I'll gladly make the changes but would prefer to have someone who knows the over code to do it as I wouldn't know what affects what. If someone would give me a good idea of where to start then I'd be happy to make some changes and test it out. Either that or if we know what we should change VMSPIPE.COM to I'll gladly add the code in and test it. Michael Downey