HDTenEightyP/NetNews huggingface dataset:
From: aeichsta@athena.mit.edu (Andrew J. Eichstaedt)
Subject: Copying files; system and exec for MS-DOS perl?
Organization: Massachusetts Institute of Technology
Date: Sat, 2 Jan 1993 22:02:40 GMT

I'm using Len Reed's version of Perl for MS-DOS.  I wanted my perl script
simply to copy a file to another, new file.

* I couldn't find a perl copy function to copy files, the same way rename()
renames files, or unlink() deletes files.  Am I missing something obvious?
(I've just started using perl.)

* Failing a built-in copy function, I thought I could do something like
system("copy $oldFile $newFile").  However, I can't seem to get system or
exec working in the version of perl I'm using.  A line like
perl -e "system('dir')" seems to do nothing in the DOS version, whereas 
perl -e "system('ls')" gives a directory (as I'd expect) when I try it on a
Unix machine.  Again, am I missing something obvious?

Thanks for your suggestions.

Andrew Eichstaedt
Newsgroups: comp.lang.perl
From: Tom Christiansen <tchrist@convex.COM>
Subject: Re: setuid question
Originator: tchrist@pixel.convex.com
Date: Thu, 24 Dec 1992 00:27:50 GMT
Reply-To: tchrist@convex.COM (Tom Christiansen)
Organization: Convex Computer Corporation, Colorado Springs, CO
X-Disclaimer: This message was written by a user at CONVEX Computer
              Corp. The opinions expressed are those of the user and
              not necessarily those of CONVEX.

From the keyboard of roehrich@cray.com (Dean Roehrich):
:You must go one step beyond this, actually.  Taintperl will not execute
:another process while the PATH environment variable is tainted.  By using
:absolute pathnames you really do not address the problem as far as taintperl
:is concerned.

That's due to the transitive property of insecurity.  While you may well
call a program with an absolute pathname, you have no assurance that it
will do the same with any programs which *it* calls.  In fact, they
often do not -- check all the system() and popen() and execlp() calls.

--tom
-- 
    Tom Christiansen      tchrist@convex.com      convex!tchrist
    And don't tell me there isn't one bit of difference between null and space,
    because that's exactly how much difference there is.  :-)
            --Larry Wall in <10209@jpl-devvax.JPL.NASA.GOV>
Newsgroups: comp.lang.perl
From: asherman@fmrco.com (Aaron Sherman)
Subject: Re: actually mnemonic special variable names
Reply-To: asherman@fmrco.COM
Organization: I-Kinetics, 19 Bishop-Allen Dr., Cambridge, MA
Date: Mon, 28 Dec 1992 21:16:55 GMT


>>>>> eric.arnold@sun.com (eric ) said:

Eric> Has anyone already written something that aliases all those special
Eric> variables (Camel book:  "You can say one thing for them -- they're
Eric> certainly concise.").  For example, the first element of the default
Eric> work variable is:
[...]
Eric> This requires something like:  
Eric> 	*WORK = *_;
[...]

BE CAREFUL! This leads to seg-faults under 4.035!

Specifically, this kind of code was causing problems for me:

	sub foo
	{
		local(*_);
	}

But, you may be causing the same problem by taking the highly magical
@_ and making a "mere mortal variable" reference it.

I'm not sure that what you propose will be problematic, but seeing a
"*" before an "_" causes a knee-jerk reaction in me, now.


			-AJS
--
--------
Disclaimer: I am solely responsible for the content of this message.
The views expressed here may not be the views of I-Kinetics, Fidelity,
any of the Fidelity-owned corporations or my mother.
Newsgroups: comp.lang.perl
From: utashiro@sran230.sra.co.jp (Kazumasa Utashiro)
Subject: Re: Japanese character stuff (Was: Perl 5 and Latin-1)
Organization: Software Research Associates, Inc., Japan
Date: Tue, 22 Dec 1992 02:41:40 GMT

In article <mark.724768788@coombs> mark@coombs.anu.edu.au (Mark) writes:
>> barnett@paintbrush.mcc.com (Jim Barnett) writes:
>> >kono@csl.sony.co.jp (Shinji Kono) writes:
>> 
>> >   Support for 8bit char and multi-byte code sounds very good. I heard
>> >   there is a two byte char code version of perl for Japanese.
>> 
>> >Could anyone point me to this version of Perl? We're doing a project
>> >involving a large amount of Japanese text, and a 2-byte version would
>> >be a big help. I've been able to trick the regexp matcher into doing
>> >simple matches, but fancier things would be a problem.
>> 
>> I'm not sure about the C code version but I'm sure if you ftp'd to
>> sra.co.jp you would find some joy there...

This library is not for multi-byte character handling but
for Japanese character code conversion.  We are using
several different Japanese character code sets and sometimes
we have to convert from one to another.

Perl enhanced to handle Japanese character is called 'jperl'
which is developed by serow@ibix.co.jp and is available by
ftp from many sites including sra.co.jp.

Here are basic features of jperl.

	+ special character handling in string constant
	+ regular expression
		. matches to two-byte character
		[a-z] syntax allows to use Japanse
	+ tr allows to use Japanese character
	+ chop chops last two bytes if it is multi-byte code
	+ split(//) returns Japanese character list
	+ etc.
	
I personaly don't use jperl because jperl is not compatible
with perl.  That means script written for perl sometimes
doesn't work as expected on jperl.  This happens offten when
the script deals with binary data.

As I showed by my jperl.pl library, it is possible to handle
Japanese multi-byte characters by normal perl.  Most of text
processing tools ftpable from sra.co.jp can handle Japanese
character code properly and, of course, works with ascii
text.  But if you want to use Japanese in regexp, jperl is
to be used.

It is a problem that my scripts don't work with latin-1
because [\200-\377] is always treated as a first byte of
two-byte character.

--utashiro
Newsgroups: comp.lang.perl
From: thecure@mullian.ee.mu.OZ.AU (matthew aardvarkious)
Subject: Perl Core Dump (II)
Organization: Computer Science, University of Melbourne, Australia
Date: Wed, 23 Dec 1992 09:35:16 GMT

I've been pointed out I didn't mention architecture of an earlier post.
(sorry - hope this make it up.)

munagin/elec/k/t/90/thecure/>perl -v

This is perl, version 4.0

$RCSfile: perl.c,v $$Revision: 4.0.1.7 $$Date: 92/06/08 14:50:39 $
Patch level: 35

Copyright (c) 1989, 1990, 1991, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 4.0 source kit.
munagin/elec/k/t/90/thecure/>perl
foreach $[ ($foo) { print $[; }
Segmentation fault (core dumped)
munagin/elec/k/t/90/thecure/>file core
core:           core file from 'perl'
munagin/elec/k/t/90/thecure/>ls -l core
 136 -rw-r--r--  1 thecure   8491440 Dec 23 20:33 core
munagin/elec/k/t/90/thecure/>uname -a
SunOS munagin 4.1.1 26 sun4c
munagin/elec/k/t/90/thecure/>


--
If someone cried, you'd sympathise
It's just a boy or a girl
It's not the end of the world

Newsgroups: comp.lang.perl
From: piet@cs.ruu.nl (Piet van Oostrum)
Subject: Re: Looking for a "numerical/alpha" sort routine.
Date: Thu, 24 Dec 1992 12:57:00 GMT
Reply-To: piet@cs.ruu.nl (Piet van Oostrum)
Organization: Dept of Computer Science, Utrecht University, The Netherlands

>>>>> utashiro@sran230.sra.co.jp (Kazumasa Utashiro) (KU) writes:

KU> Next line works for your example.

KU> @s = sort { $a <=> $b || $a cmp $b } ('3c', '1', '3a', '2', '3b');
KU> print "@s\n";

This fails however in the presence of leading zeroes in the mixed keys:

@s = sort { $a <=> $b || $a cmp $b } ('3c', '1', '3a', '2', '03b');
print "@s\n";
-- 
Piet van Oostrum <piet@cs.ruu.nl>
Newsgroups: comp.lang.perl
From: rodney@cabot.balltown.cma.COM (Rodney Peck)
Subject: Re: Looking for a "numerical/alpha" sort routine.
Organization: New York State Institute for Sebastian Cabot Studies
Date: Thu, 24 Dec 1992 03:32:59 GMT

buck@pool.info.sunyit.edu (Jesse Buckley) writes:
: Does anyone have a sort/compare routine that will work for numerical
: alpha data?  For example, if I have 1, 2, 3a, 3b, 3c, I want them sorted
: that way.  Right now the <=> compare ignored the letters after the
: numbers.  Thanks.

Well, I played with this question for about an hour and came up with this:

  $a cmp $b unless $a <=> $b;

It's efficient because the cmp is only called if they are numerically
equal.  Otherwise, the value of the numeric compare is returned.

Orginally, I spent a lot of time trying to get just the characters and
then compare them with cmp, but since the numbers are equal, the
beginning of the strings will be the same and cmp will properly rank
them even though the numbers are still on the front of the string.

However, since I spent all that time working on this, and figured out
a few nifty things that other people might want to study or whatever.

Here's the general idea I came up with orginally before trying to
remove the local variables:
sub newcmp {
# works like <=>, but also deals with trailing letters
# use the <=> first, but it lies about things being 
# equal so check with a cmp on the trailing letters

local ($ans) = ($a <=> $b);
  if ($ans == 0)
  {
    local($aa, $bb);
    ($aa) = ($a =~ /\d*(\D*)/);
    ($bb) = ($b =~ /\d*(\D*)/);
    $ans = ($aa cmp $bb);
  }
  $ans;
}

Here are four different one liners trying to get the letters away
from the numbers before I realized that the numbers would be the same
if the numbers compared equally.  It might be worth someone's while
to read them and figure out the different intentions.  The big thing
was to avoid local variables, and to reduce size.

   "$a:$b" =~ /\d*(\D*):\d*(\D*)/, $1 cmp $2 unless $a <=> $b;

   @_ = "$a:$b:" =~ /\d(\D):/g, shift cmp shift unless $a <=> $b;

   split(/:\d+/,":$a:$b", shift, shift cmp shift unless $a <=> $b;

   ($junk,@_) = split(/:\d+/,":$a:$b"), shift cmp shift unless $a <=> $b;

And finally, the obJAPH using the new sort routine:

#----
#!/bin/perl
$_= '2bn3ap1aj3cr3dl2h 2eh3e 4cc1bu2gr3be4ah';
$_.='4ba4dk2aa4ee2fe1dt2co1cs2dt1e 4fr9a\9bn';
while(($a,$b,$_)=/^(..)(.)(.*)$/) {$a{$a}=$b;}
grep($f.=$a{$_},sort{$a cmp $b unless $a<=>$b}
keys%a);                 eval("print \"$f\"");
#----
Rodney
Newsgroups: comp.lang.perl
From: roehrich@cray.com (Dean Roehrich)
Subject: Re: setuid question
Organization: Cray Research, Inc.
Date: 23 Dec 92 17:24:27 CST

In article <1992Dec23.213406.22114@porthos.cc.bellcore.com> rdm2@donner.cc.bellcore.com (mcburnett,roe d) writes:
>In article <1992Dec23.211810.9925> gaspar@st-louis-emh2.army.mil writes:
>>    1.  open(FOO,"ps ax|");
>>    2.  open(FOO,"-|") || exec 'ps -af';
>>
>>Tainperl keeps saying that my path is insecure.  Is there a way to do
>>this?  Thanks for the help.
>
>Try "/bin/ps ax|" instead.

You must go one step beyond this, actually.  Taintperl will not execute
another process while the PATH environment variable is tainted.  By using
absolute pathnames you really do not address the problem as far as taintperl
is concerned.

Add  $ENV{PATH}="some/suitable/path"
early in the script/program to untaint the path.

Dean Roehrich
roehrich@cray.com
Newsgroups: comp.lang.perl
From: Al Gaspar <gaspar@stepsun.army.mil>
Subject: setuid question
Reply-To: gaspar@st-louis-emh2.army.mil
Organization: The Internet
Date: Wed, 23 Dec 1992 21:18:10 GMT


This is probably a dumb question, but...  I am trying to write a setuid
program using taintperl and the suidscript utility.  I want to be able
to open a pipe from ps and check for some particular processes running.
No matter what I try with execs or opens, it won't let me get at the
output of that ps.  Even trying to capture it into a file first doesn't
seem to work.  Taintperl continues to bitch that my path is insecure.
I have tried the following:

    1.  open(FOO,"ps ax|");
    2.  open(FOO,"-|") || exec 'ps -af';
    3.  various combinations of exec to try and capture the ps output
        to a file.

Tainperl keeps saying that my path is insecure.  Is there a way to do
this?  Thanks for the help.

Cheers, Happy, Happy, Merry, Merry--

Al

-- 
Al Gaspar       <gaspar@st-louis-emh2.army.mil>
USAMC SIMA, ATTN:  AMXSI-TTC, 1222 Spruce St., St. Louis, MO  63103-2834
COMMERCIAL:  (314) 331-4354  AUTOVON:  555-4354
relay1.uu.net!st-louis-emh2.army.mil!gaspar
Newsgroups: comp.lang.perl
From: thecure@ee.mu.OZ.AU (matthew aardvarkious)
Subject: perl core dumped
Organization: Electronic and Electrical Engineering - University of Melbourne 
Date: Wed, 23 Dec 1992 01:59:05 GMT

The following was observed to make perl core dump.

$foo='123456';
foreach $[ ($foo) { print $[; }
At midnight in desperation
Imagine total teenage destruction

- Behvaior, "The end of the world"
Newsgroups: comp.lang.perl
From: kenc@sol.acs.unt.edu (Ken Corey - Operator)
Subject: *sigh* Yes, the eternal question: How do I run it under 4dos again?
Organization: University of North Texas
Date: Fri, 1 Jan 1993 00:10:59 GMT

Yes, the dos question that won't go away!

Darn it.  I tried to find out the incantation....I looked through 4dos help, 
all my perl mail, my notes about perl, and, as a last resource, I cleaned my 
apartment and tlooked there.  Ugh. No use.

anyway, what's the line I put in 4dos.ini so that 4dos recognixses .pl as an 
executable, and runs perl on that script?

Oh, and maybe someone could point me to the faq again?

Ken == kenc@sol.acs.unt.edu == kenc@vaxb.acs.unt.edu
 Since we're all here, we must not be all there.
 		-- Bob "Mountain" Beck
Newsgroups: comp.lang.perl
From: lwall@netlabs.com (Larry Wall)
Subject: Re: Details regarding the exec command
Organization: NetLabs, Inc.
Date: Mon, 21 Dec 1992 20:24:18 GMT

In article <BzH641.L0J@cs.uiuc.edu> schwager@mike.cs.uiuc.edu (Mike Schwager) writes:
: 
: 
: Everyone please open their Bibles to page 143... :-)
: 
: I'm trying to understand the "exec" call better.  I notice on the
: aforementioned page that if I do
: 
: $shell = '/bin/csh';
: exec $shell '-sh';
: die "barf\n";
: 
: Then the shell believes it is a login shell- ie, $0 must be "-".  However,
: if I do this:
: 
: exec '/bin/csh' '-sh';
: 
: it gives me an error, and if I do this:
: 
: exec $shell, '-sh';
: 
: it is not a login shell.  I don't understand The Book here, nor is it clear
: what a "multi-valued list" is.  What exactly is exec'ed in the first
: example?  Why does it work, whereas if I explicitly use the string
: '/bin/csh' it fails?  Please enlighten me.

List operators have what has been called the filehandle slot, and that
nowadays I tend to call the indirect object.  The distinguishing feature
syntactically is that there is no comma separating that argument from
the following argument.  This imposes some rather tight constraints
on what can be put into that grammatical slot.  Only three things
are allowed currently: a bare word, a simple scalar variable, or
a block.

The print operators use this to specify a filehandle.  Certain other
operators use this slot for other purposes.  For instance, the
sort operator either looks for a subroutine name or an inlined
block of code.  The exec routine looks for the name of the program
to "really" execute.

I could conceivable allow a quoted string in the filehandle slot,
but I'm afraid that it would lead rather quickly to unreadable code,
since it's more difficult visually to find the end of a quoted string
than the end of a bare word, a variable name, or a block.  In Perl 5
you'll be able to say

    exec { "/bin/csh" } '-sh';

That's also supposed to work in 4.035, but it didn't seem to when I tried it.

The reason I call that the indirect object slot is by analogy between

    print STDOUT $foo;

and

    give DOG $bone;

And in fact, the latter would be equivalent in Perl 5 to

    DOG->give($bone);

[Note to Raphael:  yes, I agree about optimizing method lookup in the
absence of redefinition--thanks for the suggestion.]

Larry
Newsgroups: comp.lang.perl
From: essbaum@rchland.vnet.ibm.com (Alexander Essbaum)
Subject: can't get pid
Date: Tue, 29 Dec 1992 16:49:41 GMT
Disclaimer: This posting represents the poster's views, not necessarily those of IBM
Organization: IBM Rochester

hi.  hopefully this will make sense:

i'm trying to wait for a process called from inside perl via

   open (apl2,"$apl2command|");

or

   `$apl2command`;


$apl2command calls a ksh script that executes an apl2 interpreter with
some parameters.  problem is, it seems the shell that calls the apl2 command
exits immediately even though the apl2 command takes 1 minute to run.

if i do

   $apl2id = open (apl2,"$apl2command|");
   print `ps -fp $apl2id`;
   waitpid ($apl2id,0);

i get

   USER   PID  PPID   C    STIME    TTY  TIME CMD
 essbaum 21931 17054  16                  0:00 <defunct>

and the shell that "$apl2command" ran in seems to go away (no "waiting").

while this is running, i can see (via ps alx) that the process i REALLY
want to wait for is created and its parent is another process who's PPID
is 1.  apparently the shell from "open" goes away and the ksh that runs
apl2 gets adopted by init.  does this make sense?  any idea what might
cause this or how i can stop it?

basically, i need to wait for the apl2 process to finish before i go on,
but i can't seem to get my hands on the PID of that process.  i'd rather
not use ps and try to guess which process is the right one... (there could
be multiple apl2 processes, etc.  i'd have to look at times and stuff.
yuk. )

thanks in advance for any help!

axel

Newsgroups: comp.lang.perl
From: Tom Christiansen <tchrist@convex.COM>
Subject: Re: Bug with foreach/local in 4.035
Originator: tchrist@pixel.convex.com
Date: Tue, 29 Dec 1992 22:40:47 GMT
Distribution: comp
Reply-To: tchrist@convex.COM (Tom Christiansen)
Organization: Convex Computer Corporation, Colorado Springs, CO
X-Disclaimer: This message was written by a user at CONVEX Computer
              Corp. The opinions expressed are those of the user and
              not necessarily those of CONVEX.

From the keyboard of soup@ampersand.com (Doug Campbell):
:There appears to be a bug (or at least a surprising behavior) in 4.035
:regarding foreach and local.  It seems that a construct like:
:
:	foreach $i (@list)
:
:will  cause a subsequent (down the call stack) "local ($i)" to cause the
:item  in  @list  currently  referenced  by $i  to appear  blank.   

That's a manifestation of "variable suicide".  You can read about it 
in the FAQ.

--tom
-- 
    Tom Christiansen      tchrist@convex.com      convex!tchrist

    stab_val(stab)->str_nok = 1;    /* what a wonderful hack! */
        --Larry Wall in stab.c from the perl source code
Newsgroups: comp.lang.perl
From: sundare@watson.ibm.com (C. Sundaresan)
Subject: file handle unknown in subroutine
Date: Mon, 28 Dec 1992 22:12:02 GMT
Distribution: usa
Disclaimer: This posting represents the poster's views, not necessarily those of IBM
Organization: IBM T.J. Watson Research Center

I open a file in the main part of the Perl script and writing
to it works fine, but in my subroutines the file handle seems
to be unknown.  Is the scoping for filehandles unlike that of
variables?

Chris Sundaresan 
Newsgroups: comp.lang.perl
From: essbaum@rchland.vnet.ibm.com (Alexander Essbaum)
Subject: Re: fork and STDOUT
Date: Thu, 31 Dec 1992 18:58:04 GMT
Disclaimer: This posting represents the poster's views, not necessarily those of IBM
Organization: IBM Rochester

In article <1htthbINNqg9@shelley.u.washington.edu>, wiml@stein.u.washington.edu (William Lewis) writes:
|> essbaum@rchland.vnet.ibm.com (Alexander Essbaum) writes:
|> >if (!($pid = fork)) {
|> >	open (cmd,"$cmd|");   # $cmd is a call to another perl script
|> >	print <cmd>;
|> >	exit 0;
|> >}
|> 
|> >the stuff returned in <cmd> (which comes from print "..."; and `...`; lines
|> >in $cmd) doesn't print properly.  it seems to be getting buffered such that
|> >when $cmd exits, all of STDERR gets printed, then all of STDOUT. 
|> 
|>   Generally, stder doesn't get redirected along with stdout. (That's
|> its purpose for being separate.) I'd guess that the error output is
|> going straight to your tty when $cmd runs, but stdout is getting trapped
|> in the pipe. Then you print the pipe's contents on the next line. So
|> all the error output will precede the normal output.
|> 

yes, this is what i thought.  how do i fix the "trapped in the pipe"?
i'm now using:


  if (!($pid = fork)) {  # if child
	select(STDERR); $| = 1;
	select(STDOUT); $| = 1;
	print "child running\n";
	open (cmd,"$cmd 2>&1 |");
	print "cmd forked...\n";
	print <makepla>;
	print "child exitting...\n";
	exit 0;
  }
  print "parent continuing after fork...\n";


$cmd is a call to a perl script that contains:

  print "blah blah\n";
  if (error) { die "died\n"; }
  print "more blah blah\n";

what i get (in the xterm i ran the parent from) is:

child running
cmd forked...
parent continuing after fork...
<parent exits>
<pause for ~1 minute while $cmd runs and *should* be printing stuff>
died
blah blah
child exitting...


shouldn't the 2>&1 in the "open" at least merge STDOUT and STDERR so the
"blah blah" shows up before "died"?  also, i need to have the print lines
in $cmd printed in real time (no buffering).  $cmd may not exit and i need
to see where it's hung.  if it never exits, the buffered prints never show
up.

if it matters, the parent must be able to loop and spawn multiple $cmd's.
it's ok that they all print to the same tty as long as they do it as they
go.

many thanks in advance for any help!

axel
Newsgroups: comp.lang.perl
From: cwalker@rchland.vnet.ibm.com (Cary Walker)
Subject: Dynamic grepping
Date: Wed, 23 Dec 1992 15:54:57 GMT
Disclaimer: This posting represents the poster's views, not necessarily those of IBM
Organization: IBM Rochester

Is there a way to have the string that grep checks for stored in a variable?  For
example, say I wanted to find those lines in an array of lines that contained
digits.  Could I store the regular expression, \d,  in a variable and have grep
check the array against that?

Here's a small sample program to express my point:

#!/usr/bin/perl

unshift(@checkstrs, "1111foo222");
unshift(@checkstrs, "foofoo");
$grepstr="\d";

@digitsfound1 = grep(/$grepstr/, @checkstrs);
@digitsfound2 = grep("$grepstr", @checkstrs);
@digitsfound3 = grep('$grepstr', @checkstrs);
@digitsfound4 = grep(/\d/, @checkstrs);

foreach $digitfound1(@digitsfound1) {
        print "1st run=$digitfound1\n";}
foreach $digitfound2(@digitsfound2) {
        print "2nd run=$digitfound2\n";}
foreach $digitfound3(@digitsfound3) {
        print "3rd run=$digitfound3\n";}
foreach $digitfound4(@digitsfound4) {
        print "4th run=$digitfound4\n";}
The output is:

2nd run=foofoo
2nd run=1111foo222
3rd run=foofoo
3rd run=1111foo222
4th run=1111foo222

The 4th grep expression worked like I wanted it to but the regular expression is
explicit there and not in a variable.

I've looked into the eval function but to no avail.

Thanks!

-Cary


Newsgroups: comp.lang.perl
From: mitra@pandora.sf.ca.us (Mitra)
Subject: Arrgh: Looking for usenet news watcher
Organization: Pandora Systems
Date: Sun, 3 Jan 1993 18:58:57 GMT
X-Newsreader: TIN [version 1.1 PL6]


If you find it then I'd like a pointer to it as well

Thanks 

- Mitra

Newsgroups: comp.lang.perl
From: meekj@pt.Cyanamid.COM (Jon Meek)
Subject: Need Help with DOS Perl and Serial Ports
Reply-To: meekj@pt.Cyanamid.COM
Organization: American Cyanamid Company
Date: Tue, 29 Dec 1992 16:58:22 GMT

I am trying to talk to an instrument via RS-232 using Perl on a PC. Is
there something special that needs to be done to enable bidirectional
communications on a serial port? (Maybe a magical ioctl?) The outgoing
commands work, but I can not read data from the instrument.

I have tried two versions of DOS Perl: Perl 3 from JPL, and
bcdos_perl-4.019, one returns garbage on a serial port read, the other
hangs and gives a DOS I/O failure.

I have a program that talks to this instrument with no problems using
Perl 4.035 on a Sun (but it has to run on a PC (: ).

Thank you, Jon Meek meekj@pt.Cyanamid.COM