HDTenEightyP/NetNews huggingface dataset:
From: dg@dgupta.hpl.hp.com (Dipankar Gupta)
Newsgroups: comp.lang.modula3
Subject: M3 2.07 Compiler/Trestle/HP 9000s300 problem
Date: 30 Jul 92 16:18:08 GMT
Article-I.D.: dgupta.DG.92Jul30171808
Distribution: comp
Organization: Hewlett-Packard Laboratories, Bristol, UK


I have a problem with compiling trestle from the 2.07 distribution on
an HP 9k/3xx running HPUX 8.0. The compiler barfs:

dgupta.hpl.1675> m3make -f m3makefile.trestle
        cd trestle; /users/dg/bin/m3make all
============================= Building in HP300
        /users/dg/bin/m3 -w1 -make -why -O   -a libm3ui.a -F.PGM_SOURCES -lm3X11R4
new source -> compile ../src/splitm3/TranslateVBT.m3
"TranslateVBT.m3", line 47: compiler error: register allocation error
new source -> compile ../src/splitm3/RigidVBT.m3
"RigidVBT.m3", line 28: compiler error: register allocation error
new source -> compile ../src/xvbtm3/XClient.m3
"XClient.m3"verflow, line 755: compiler error: register allocation error
compilation failed => not building library "libm3ui.a"

Anyone else have this problem? Could it be due to my having compiled
the driver with -O (full optimisation) on the HP C compiler?

Thanks muchly,
Dipankar Gupta
HPLabs Bristol UK
dg@hplb.hpl.hp.com
--
--
Newsgroups: comp.lang.modula3,comp.lang.misc,comp.lang.c++
From: Ari.Huttunen@hut.fi (Ari Juhani Huttunen)
Subject: Re: Sather's Multiple Inheritance
Organization: Helsinki University of Technology, Finland
Date: Mon, 20 Jul 1992 09:04:02 GMT

>Eliot Moss:
>   Sounds to me as if
>   Sather flattens the types out completely, which will interfere with
>   building large system, by undermining encapsulation.

Well said. That is my understanding also. But the front page of Sather
manual says that large systems are not intended to be built with Sather.
(No, I don't think it is a good policy either.)

"Abstract. This report describes the object-oriented programming lan-
guage Sather. Sather is a simplified, optimized variant of Eiffel (Sather 
tower is a landmark in Berkeley). It is meant to be a working language, 
focussed on the practical needs of writing efficient, reusable code. It is 
designed for individual researchers or small groups and eliminates fea-
tures which are pedantic, of purely theoretical interest, or necessary 
only for large or naive programming teams. Sather has clean and sim-
ple syntax, parameterized classes, object-oriented dispatch, multiple in-
heritance, strong typing, and garbage collection. It generates efficient C 
code which is easily integrated with existing code. "

Rockwell:
>From what I read, you can get opacity by the simple expedient of
>masking the detail you want hidden with a later namespace conflict.
>You can see the names, but the original definitions are shadowed from
>the point where you see those names.

Kennel:
>I don't know what quite you mean, but there's the "private" attribute:

Let's consider a simple example:

class FATHER is

	private xyz:INT;

	foobar is
		xyz := 123;
	end; -- foobar

end; -- FATHER

class CHILD is

	FATHER;
	alias father_xyz xyz; 

	xyz:DOUBLE is 
		res := 1.0;
	end; -- xyz

end; -- CHILD

When the 'foobar'-procedure is used on an object of type FATHER, it works
correctly and assigns 123 to an integer 'xyz'. But when the foobar is
used on an object of type CHILD, well, the compiler catches the error...
(You cannot assign to a procedure.)

The 'private' does not prevent redefinition of 'xyz' in CHILD. Also, the
'foobar' still uses the old name 'xyz' in CHILD, because the 'alias' 
does not change it. (But you can refer to the integer in CHILD by calling
it 'father_xyz'.)

(I ran the code through a Sather compiler.)

>Though actually
>in Sather you can manually find out the "type" of any random object:
>( I guess the only allowed operations are equality and inequality on this. )

With the help of library classes you can test if one type is a subtype
of another.
--
...............................................................................
Ari Huttunen                               They say the sky high above
90-7285944                                   is Caribbean blue...  (Enya)
Newsgroups: comp.lang.modula3,comp.lang.misc,comp.lang.c++
From: Ari.Huttunen@hut.fi (Ari Juhani Huttunen)
Subject: Re: Sather's Multiple Inheritance
Organization: Helsinki University of Technology, Finland
Date: Mon, 20 Jul 1992 09:25:48 GMT

In article <147qlkINNft3@network.ucsd.edu> mbk@lyapunov.ucsd.edu (Matt Kennel) writes:

! Now what if both PARENT_CLASS_ONE and PARENT_CLASS_TWO
! have two features, say integer variables "count":

! Then you can use "alias new_name old_name":
! ===========
! class CHILD is

! 	PARENT_CLASS_ONE;	--- That inherits it
! 	alias count_one count;	--- rename "count" from P_C_O
! 	PARENT_CLASS_TWO;	--- That inherits another
! 	alias count_two count;	--- Rename that one as well

! 	count : INT;		--- A third "count" different from the
! 				--- other two.

! end;
! ============

! I don't know if this solution is perfect for all circumstances, but it
! appears to a layman to cover a whole lot, and it's very easy to understand.

You still have the problem that CHILD, PARENT_CLASS_ONE and PARENT_CLASS_TWO
refer to the same 'count' each, unless you re-rewrite the functions in
the parent classes. (In some cases this would be desirable, in others it
would not.)

The problem would be solved, if this were possible: 'rename count_two count'.
--
...............................................................................
Ari Huttunen                               They say the sky high above
90-7285944                                   is Caribbean blue...  (Enya)
From: dave@kanga.lcs.mit.edu (David Sternlicht)
Newsgroups: comp.lang.modula3
Subject: trestle
Date: 29 Jul 92 20:56:35 GMT
Organization: MIT X CONSORTIUM

-- 
Has anybody built trestle with X11R5?
			
				dave sternlicht
				mit X consortium
				dave@expo.lcs.mit.edu
Xref: sparky comp.lang.modula3:843 comp.lang.misc:2685 comp.lang.c++:11262
From: mbk@lyapunov.ucsd.edu (Matt Kennel)
Newsgroups: comp.lang.modula3,comp.lang.misc,comp.lang.c++
Subject: Re: Sather's Multiple Inheritance
Date: 21 Jul 1992 20:04:41 GMT
Organization: Institute For Nonlinear Science, UCSD
NNTP-Posting-Host: lyapunov.ucsd.edu
X-Newsreader: Tin 1.1 PL3

Ari.Huttunen@hut.fi (Ari Juhani Huttunen) writes:
: In article <147qlkINNft3@network.ucsd.edu> mbk@lyapunov.ucsd.edu (Matt Kennel) writes:
: 
: ! Now what if both PARENT_CLASS_ONE and PARENT_CLASS_TWO
: ! have two features, say integer variables "count":
: 
: ! Then you can use "alias new_name old_name":
: ! ===========
: ! class CHILD is
: 
: ! 	PARENT_CLASS_ONE;	--- That inherits it
: ! 	alias count_one count;	--- rename "count" from P_C_O
: ! 	PARENT_CLASS_TWO;	--- That inherits another
: ! 	alias count_two count;	--- Rename that one as well
: 
: ! 	count : INT;		--- A third "count" different from the
: ! 				--- other two.
: 
: ! end;
: ! ============
: 
: ! I don't know if this solution is perfect for all circumstances, but it
: ! appears to a layman to cover a whole lot, and it's very easy to understand.
: 
: You still have the problem that CHILD, PARENT_CLASS_ONE and PARENT_CLASS_TWO
: refer to the same 'count' each, unless you re-rewrite the functions in
: the parent classes. (In some cases this would be desirable, in others it
: would not.)
: 
: The problem would be solved, if this were possible: 'rename count_two count'.

I think there's a bug in the compiler, actually.  As you were, I wasn't able
to override an integer feature (storage) with a procedure, but I was
able to override that same integer feature with a feature of different type.
============================
class FATHER is

	private xyz:INT;

        foobar is
                xyz := 123;
        end; -- foobar

end; -- FATHER

class CHILDBAD is

        FATHER;
        alias father_xyz xyz;

        xyz:DOUBLE is
                res := 1.0;
        end; -- xyz

end; -- CHILDBAD

class CHILDGOOD is

        FATHER;
        alias father_xyz xyz;

        xyz:DOUBLE;

end; -- CHILDGOOD


class TEST is
	main is
		a:FATHER;
		a.foobar;

		b:CHILDGOOD;
		b.foobar;

--		c:CHILDBAD;
--		c.foobar;
--  Compiler gives an error if you uncomment these lines! ???
--
	end;

end;

===================================

: --
: ...............................................................................
: Ari Huttunen                               They say the sky high above
: 90-7285944                                   is Caribbean blue...  (Enya)

--
-Matt Kennel  		mbk@inls1.ucsd.edu
-Institute for Nonlinear Science, University of California, San Diego
Newsgroups: comp.lang.modula3
From: muller@src.dec.com (Eric Muller)
Subject: Re: trestle...
Organization: DEC Systems Research Center
Date: Thu, 30 Jul 92 03:01:16 GMT

Unfortunately, the m3makefile in trestle/apps is not portable.  You
need to edit it and replace "mips" by the name of your architecture
(DS3100, SPARC, whatever).  I'll try to make things better for the
next release.  Sorry for the trouble.

Also, X11R5 should be fine; isn't it compatible with X11R4 clients ?

-- 
Eric.
From: dave@kanga.lcs.mit.edu (David Sternlicht)
Subject: trestle
Organization: MIT X Consortium
Date: Thu, 30 Jul 1992 13:07:50 GMT

Thankyou for all the help I recieved in getting my trestle apps to work.
My primary interest at this point is in multithreading a c++ toolkit for
adoption as an X Consortium standard.  Evidently the modula-3/trestle community
is a little further ahead in mt user interface toolkits than I am so I wish
to learn...  Being a newcommer to this list I would be interested in who is
doing industrial or academic code development work with trestle and maby
a little about there applications.  This news group is sure alot easier to follow
than comp.lang.c++ :-)
-- 
			
				dave sternlicht
				mit X consortium
				dave@expo.lcs.mit.edu
From: toro.MTS.ML.COM!scott%beethoven@uunet.uu.net (Scott Strool)
Newsgroups: comp.lang.perl
Subject: inserting text
Date: 31 Jul 92 00:36:43 GMT
Reply-To: Scott Strool <toro.MTS.ML.COM!scott%beethoven@uunet.uu.net>
Organization: The Internet

Can Perl be used for inserting a line of text into many files. I would like
to do this from the shell.
Scott Strool
Consultant
Merrill Lynch & Co Inc.
Tel: (212) 449-1456
Fax: (212) 449-1465
scott@ml.com
uunet!toro!scott
From: tchrist@convex.COM (Tom Christiansen)
Newsgroups: comp.lang.perl
Subject: Re: # of files in directory
Date: 25 Jul 92 02:03:42 GMT
Reply-To: tchrist@convex.COM (Tom Christiansen)
Organization: CONVEX Realtime Development, Colorado Springs, CO
Originator: tchrist@pixel.convex.com
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 sbo@vlsi.polymtl.ca (Stephane Boucher):
:>>>>> On Thu, 23 Jul 1992 22:57:15 GMT, Tom Christiansen <tchrist@convex.COM> said:
:
:  >     print "There are ", 
:  > 	    scalar(opendir(F,"/usr/bin"),scalar(grep(!/^\./,readdir(F)))), 
:  > 	" files!\n"
:
:Tom? How did you manage to miss this one? And I tought you
:where one of the great :-)
:
:with: 
:	grep(!/^\./,readdir(F)) 
:
:you will miss all the files that start with a dot. It should
:read:
:
:	grep(!/^\.{1,2}$/,readdir(F))

I thought about that, but was emulating ls as the original poster
also appeared to be doing.

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


    "That must be wonderful!  I don't understand it at all."
From: lwall@netlabs.com (Larry Wall)
Newsgroups: comp.lang.perl
Subject: Re: "b subname" doesn't work in "perl -d" (v. 4.019) ?
Date: 23 Jul 92 19:19:56 GMT
Organization: NetLabs, Inc.

Your subject line answers your question.  Upgrade to 4.035.

Larry
Newsgroups: comp.lang.perl
From: Tom Christiansen <tchrist@convex.COM>
Subject: Re: Repeat string matching/substituting ?
Originator: tchrist@pixel.convex.com
Reply-To: tchrist@convex.COM (Tom Christiansen)
Organization: CONVEX Realtime Development, Colorado Springs, CO
Distribution: comp
Date: Fri, 24 Jul 1992 13:11:18 GMT
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 tshields@oracle.com (Thomas A. Shields Jr.):
:I need to surround each occurrence of a string within a line with

Blessed (and few :-) are they who spell occurrence right. :-)

:begin and end tags, i.e.  "the place the fox went is the chickencoop"
:with keyword "the" needs to become "<begin>the<end> place
:<begin>the<end> fox went is <begin>the<end> chickencoop".
:
:Here's what I tried:
:
:#!/usr/bin/perl -p
:while (/the/g) {
:  $_ = $` . "<begin>" . $& . "<end>" . $';
:}
:
:but this fails unpredictably, probably because //g doesn't like the
:fact that $_ is changing on it.  Any insight into how //g works
:internally, or a better way to accomplish this in general would be
:much appreciated.  Thanks!

I think it would be better to put the /g on an s/// expr in this case:

    perl -pe 's/\bthe\b/<begin>the<end>/g'

--tom


-- 
    Tom Christiansen      tchrist@convex.com      convex!tchrist
    If you consistently take an antagonistic approach, however, people are
    going to start thinking you're from New York.   :-)
            --Larry Wall to Dan Bernstein in <10187@jpl-devvax.JPL.NASA.GOV>
Newsgroups: comp.lang.perl
From: nomi@pooh.mmwb.ucsf.edu (Nomi Harris)
Newsgroups: comp.lang.perl
Subject: Truncating or rounding "floats"
Date: 29 Jul 92 00:06:59 GMT
Organization: UCSF Computer Graphics Lab

This is probably a silly thing to even try to do in an untyped
language, but I want to round off a "float" variable to an "int."
Since there are no round() or truncate() functions, I wrote my
own function:

# Round off a "float" to an "int"
sub round {
     local($float) = @_;
     local($int, $remainder);
     
     $int = $float;
     $int =~ s/\..*//;	# Truncate by getting rid of digits that
			# follow the decimal point

     $remainder = $float - $int;
     if ($remainder >= 0.5) {
	  $int++;	# Round up
     }

     return($int);
}


Although the "int" this function returned looked like what I wanted,
it seemed to behave like the original float when I used it in arithmetic
expressions!  I added the following lines before  return($int):

     print("Round($float) = $int.\n");
     $int = $int * 1;
     print("After multiplying by 1: $int.\n");
     return($int);

Lo and behold, the value of the "int" reverted to the float after I
multiplied it by 1!  Apparently, the string substitution I did on $int
changed its printed appearance without actually changing the value.
Weird!

I also tried sprintf(), but that didn't work either, probably for the
same reason.

Any suggestions?

	Nomi Harris
	nomi@cgl.ucsf.edu
From: tony.bennett@East.Sun.COM (t e bennett)
Newsgroups: comp.lang.perl
Subject: Re: perl "patches" for solaris 2.0 ?
Date: 22 Jul 92 13:41:39 GMT
Organization: Sun Microsystems, RTP, NC
Distribution: comp
NNTP-Posting-Host: uh-oh.east.sun.com
In-reply-to: meyer@darkwing.uoregon.edu's message of 22 Jul 92 13:12:47 GMT


In article <MEYER.92Jul22061247@darkwing.uoregon.edu> meyer@darkwing.uoregon.edu (David M. Meyer 503/346-1747) writes:

           Does anyone know if perl for Solaris 2.0 (sparc) is in
           there works anywhere?

I just let Configure (4.035) deal with it.
No surprises, except that I had to disable the
optimizer for util.c/tutil.c (was getting core dumps).

--tony
--
--tbennett     tony.bennett@East.Sun.COM   mailstop: RTP-NC
Newsgroups: comp.lang.perl
From: tshields@oracle.com (Thomas A. Shields Jr.)
Subject: Repeat string matching/substituting ?
Organization: Oracle Corporation
Distribution: comp
Date: Fri, 24 Jul 1992 00:09:11 GMT
X-Disclaimer: This message was written by an unauthenticated user
              at Oracle Corporation.  The opinions expressed are those
              of the user and not necessarily those of Oracle.

I am relatively new to Perl, and I am trying to do what seems to be a
fairly simple operation, without much success.

I need to surround each occurrence of a string within a line with
begin and end tags, i.e.  "the place the fox went is the chickencoop"
with keyword "the" needs to become "<begin>the<end> place
<begin>the<end> fox went is <begin>the<end> chickencoop".

Here's what I tried:

#!/usr/bin/perl -p
while (/the/g) {
  $_ = $` . "<begin>" . $& . "<end>" . $';
}

but this fails unpredictably, probably because //g doesn't like the
fact that $_ is changing on it.  Any insight into how //g works
internally, or a better way to accomplish this in general would be
much appreciated.  Thanks!

-ts-
--
Tom Shields, Multimedia Developer      (415) 506-6182      tshields@oracle.com
Oracle Corporation, Box 659412, Redwood Shores, CA, 94065   =What .sig virus?=
Newsgroups: comp.lang.perl
From: weingart@inf.ethz.ch (Tobias Weingartner)
Subject: Echo, how do you turn off? ;-}
Followup-To: comp.lang.perl
Keywords: echo, perl
Reply-To: weingart@inf.ethz.ch
Organization: ETH - Switzerland
Date: Thu, 30 Jul 1992 12:38:57 GMT

Ok I thought I was a *NIX hacker, and knew it all.
However, I need some kind soul to get me out of this
predicament.

How do you turn off echo in perl, or more specific,
what the hell am I doing wrong here:

sub toggle_echo {
	local($sgttyb_t) = 'c4 s';
	local($buffer) = '';
	local(@array) = ();

	ioctl(STDIN, &TIOCGETP, $buffer);
	@array = unpack($sgttyb_t, $buffer);
	$array[4] ^= &ECHO;
	$buffer = pack($sgttyb_t, @array);
	ioctl(STDIN, &TIOCSETP, $buffer);
}

This does not seem to work very well... i.e. not at all.

Thanks for any info.
Please mail me, I'll collate (is that right?), and then
post a summary.

--Toby.

Newsgroups: comp.lang.perl
From: dbl@osf.org (David B. Lewis)
Subject: wanted: mail_to_news.pl: mailing list to inews filter
Organization: Open Software Foundation
Distribution: na
Date: Fri, 24 Jul 1992 13:15:02 GMT

About a year and a half ago, someone posted to this group a program called
mail_to_news.pl which was very useful for taking messages in mailing lists
and forwarding them, suitably repackaged, to the local news system. I've
lost access to the copy I had; can anyone tell me where I might find this
script or its author?

Thanks in advance.

-- 
David B. Lewis  	Temporarily at and certainly not speaking for OSF.
by day: dbl@osf.org			by night: david%craft@uunet.uu.net
Newsgroups: comp.lang.perl
From: mcmahan@cs.unca.edu (Scott McMahan -- Genesis mailing list owner)
Subject: Ported: to VMS?
Organization: University of North Carolina at Asheville
X-Newsreader: Tin 1.1 PL3
Date: Sat, 25 Jul 1992 15:43:34 GMT

Has Perl been ported to VMS?

Scott

(corollary: if so, where can I get a copy? :^))

Newsgroups: comp.lang.perl
From: edwin@cs.ruu.nl (Edwin Kremer)
Subject: Re: Perl for NeXT?
Summary: perl-sources is available via anonymous ftp from ftp.cs.ruu.nl
X-Comp-Archives-Magic-Cookie: ftp.cs.ruu.nl:/pub/PERL/perl.tar.Z
Date: Wed, 22 Jul 1992 15:07:50 GMT
Organization: Utrecht University, Dept. of Computer Science

In <3519@richsun.cpg.trs.reuter.com> jack@richsun.cpg.trs.reuter.com
(Jack Gidding) writes:

   | Can someone tell me where I can get Perl for the NeXT?
Where ever you can get Perl, you can get Perl for the NeXT as it compiles
straight out of the box. See below for a example location. (I assume you
have the C compiler on the NeXT, don't you?)

   | and how big is it?
The compressed tar file containing the Perl sources version 4.0.35 is
appr. 1.5 Mbyte.

		regards,
						--[ Edwin ]--

________________________________________________________________________
  We, Computer Science department, Utrecht University,  are  running  an
anonymous  FTP  server  on  one  of  our systems. In addition to the FTP
service we're also running a mail  server,  for  those  of  you  without
direct Internet access.


--> How to get 'perl-sources' via anonymous FTP:

	Site:		ftp.cs.ruu.nl  [131.211.80.17]
	Login:		"anonymous" or "ftp"
	Password:	your own email address (you@your_domain)
	File:		/pub/PERL/perl.tar.Z


--> How to get 'perl-sources' via e-mail from our mail-server:

    NOTE: In the following I have assumed that your mail address is
	  "fred_flintstone@stone.age.edu"; of course you must substitute
	  your own address for this.
	  ** PLEASE USE VALID DOMAIN ADDRESSES. DO NOT USE ADDRESSES **
	  ** WITH ! and @ MIXED !!!! BITNETTERS USE USER@HOST.BITNET **


    Send the following message to
		mail-server@cs.ruu.nl
    or the old-fashioned path alternative
		uunet!mcsun!sun4nl!ruuinf!mail-server


      begin
      path fred_flintstone@stone.age.edu (SUBSTITUTE *YOUR* ADDRESS)
      send PERL/perl.tar.Z
      end


The path command can be deleted if we receive a valid from address in your
message. If this is the first time you use our mail server, we suggest you
first issue the request:

      send HELP


  A complete "ls-lR" listing of the archive is  kept  in  the  top-level
directory, it will be updated every night. To get it, issue the command:

     send ls-lR.Z



  That's all for now. If you encounter problems using  the  FTP  service
and/or the mail-server, feel free to drop me a line (by e-mail, please).


-- 
Edwin Kremer, systems and network administrator.  [NIC-Whois handle: EHK3]
     Department of Computer Science,  Utrecht University,  The Netherlands
     Email: edwin@cs.ruu.nl                NeXT-mail: edwin@edge.cs.ruu.nl
Newsgroups: comp.lang.perl
From: neil@zorro.tyngsboro.ma.us (Neil Mowbray)
Subject: perl function from C
Keywords: userinit, C function
Organization: ClickTech
Date: Thu, 30 Jul 1992 02:58:52 GMT


Dear Folks,

We have just started with perl and need to build a connexion to our
relational data base Borland/Interbase.  We want to know how to
invoke a perl function from a 'C' function which is linked into perl
using userinit().

Many Thanks,

Neil Mowbray
Jardine Fleming
neil@zorro.tyngsboro.ma.us
From: fingerhu@ircam.fr (Michel Fingerhut)
Newsgroups: comp.lang.perl
Subject: VERSIONS 3.1 -> 3.2 patch
Date: 31 Jul 92 09:27:38 GMT
Organization: Inst. de Recherche et Coordination Acoustique/Musique, Paris

This small patch fixes the lookup for executables (they can end up
with a relative path).

-----------------  Cut here ----------------
------- versions.sh -------
*** Standard Input	Fri Jul 31 11:24:48 1992
--- versions.sh	Fri Jul 31 11:21:12 1992
***************
*** 7,13 ****
  #                              manager@ircam.fr
  
  #
! # versions	3.1 IRCAM 7/31/92
  #
  # Extract program version number
  #
--- 7,13 ----
  #                              manager@ircam.fr
  
  #
! # versions	3.2 IRCAM 7/31/92
  #
  # Extract program version number
  #
***************
*** 97,103 ****
  
  # if -v, print version and exit
  if (defined $opt_v) {
!     print "%I% IRCAM %G%";
      exit;
  }
  
--- 97,103 ----
  
  # if -v, print version and exit
  if (defined $opt_v) {
!     print "3.2 IRCAM 7/31/92";
      exit;
  }
  
***************
*** 156,162 ****
  		$path= "$dir/$path", last if -f "$dir/$path";
  	    }
  	}
! 	next if $path !~ /^\/.*/ || ! -f $path;
  
  	# perform special macro subst: %% -> $path
  	$command=~ s/\%\%/$path/g;
--- 156,162 ----
  		$path= "$dir/$path", last if -f "$dir/$path";
  	    }
  	}
! 	next if ! -f $path;
  
  	# perform special macro subst: %% -> $path
  	$command=~ s/\%\%/$path/g;
Newsgroups: comp.lang.perl