"Craig A. Berry" <[EMAIL PROTECTED]> wrote on 01/14/2005 12:45:54 PM:

<snip />

> The way to find out what you're configured with is:

> $ perl -"V:useperlio"
> useperlio='define';

Yep, when I do that, I get "useperlio='define';"

<snip />

> I read the perlipc documentation the same way you do, i.e., the
> signal should get delivered when using perlio.

Well, I have changing the I/O discipline six ways from Sunday and can't 
get the ALRM signal delivered under VMS. The script (a working one this 
time!) is attached. It's got DOS line breaks -- be warned.

In summary, I took the script from yesterday, added Getopt::Long and a 
-discipline option, and opened the pipe with

my $access = "-|$opt{discipline}";
my $pid = open ($pipe, $access, $cmd) or die;

I tried :perlio, :stdio:crlf, :unix:crlf, and maybe others, but with $cmd 
= "wait 00:00:30" and the timeout at 10 seconds, it universally took 30 
seconds to execute. Well, sometimes 31. But never 10.

$ assign "unsafe" PERL_SIGNALS

did in fact restore the old behaviour. Not suprisingly, I can find no way 
to do this from inside Perl. Even doing it in a BEGIN block didn't help.

> But we could have a
> bug or an implementation-defined behavior or a loophole closed for
> stability reasons but not documented properly.  This would need to be
> tested and compared on various platforms before filing a bug report I
> think.

I don't know whether by "various platforms" you mean other VMS-es on other 
architectures or other OS-es completely. If the former, I'm a bit 
challenged, since the system I'm reporting on (DEC C V5.6-003 on OpenVMS 
Alpha V7.1-1H2) is the most modern one currently available to me (!). If 
the latter I'm slightly better off, but not much:

With ActivePerl 810 (5.8.4) running under Win2000 and feeding it the 
"pause" command, I get the same behaviour as under VMS, including the 
results of "perl -V:useperlio". I have to hit return before the script 
exits. Unlike 5.6.1, though, you _can_ use SIGALRM under Windows to time 
out something like "sleep 1 until $timeout" (where $timeout is set by the 
alarm handler). So we're closer, but still no cigar.

Oddly enough, with Cygwin on the same machine as the ActivePerl 810 test 
(Perl 5.8.6 this time) it works as advertised: 'sleep 30' with a 10-second 
timeout completes in 10 seconds, using both :perlio and :stdio. I will 
withhold the obvious editorial comment.

I can check Darwin over the weekend, but after that I'll be pretty much 
out of "various platforms" I can test personally.

Thanks again for the help,
Tom Wyant




This communication is for use by the intended recipient and contains 
information that may be privileged, confidential or copyrighted under
applicable law.  If you are not the intended recipient, you are hereby
formally notified that any use, copying or distribution of this e-mail,
in whole or in part, is strictly prohibited.  Please notify the sender
by return e-mail and delete this e-mail from your system.  Unless
explicitly and conspicuously designated as "E-Contract Intended",
this e-mail does not constitute a contract offer, a contract amendment,
or an acceptance of a contract offer.  This e-mail does not constitute
a consent to the use of sender's contact information for direct marketing
purposes or for transfers of data to third parties.

 Francais Deutsch Italiano  Espanol  Portugues  Japanese  Chinese  Korean

            http://www.DuPont.com/corp/email_disclaimer.html

Attachment: trw.pl
Description: Binary data

Reply via email to