delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2000/07/06/17:58:05

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sourceware.cygnus.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
From: Chris Faylor <cgf AT cygnus DOT com>
Date: Thu, 6 Jul 2000 17:57:06 -0400
To: cygwin AT sourceware DOT cygnus DOT com
Subject: Re: Why can't I run perl scripts after cd to /_/d i.e. d:
Message-ID: <20000706175706.A23165@cygnus.com>
Reply-To: cygwin AT sourceware DOT cygnus DOT com
Mail-Followup-To: cygwin AT sourceware DOT cygnus DOT com
References: <F614BF868E0DD411A5A700508B957E0038D07B AT MSGBOS679NTS DOT fmr DOT com>
Mime-Version: 1.0
User-Agent: Mutt/1.2i
In-Reply-To: <F614BF868E0DD411A5A700508B957E0038D07B@MSGBOS679NTS.fmr.com>; from Steve.Tolkin@fmr.com on Thu, Jul 06, 2000 at 05:12:19PM -0400

On Thu, Jul 06, 2000 at 05:12:19PM -0400, Tolkin, Steve wrote:
>> -----Original Message-----
>> From: Chris Faylor [mailto:cgf AT cygnus DOT com]
>> Sent: Wednesday, July 05, 2000 9:24 PM
>> To: cygwin AT sourceware DOT cygnus DOT com
>> Subject: Re: Why can't I run perl scripts after cd to /_/d i.e. d:
>> 
>>It certainly sounds like this is not a cygwin version of perl and so it
>>does not understand cygwin paths.
>
>Indeed it is not a cygwin version of perl.  But I do not understand
>what you mean "it does not understand cygwin paths".  The path it
>cannot seem to find is the path to the executable, on the first line of
>the script, i.e.  #/usr/bin/perl Is this what you mean?

It cannot find the path to the script:

> /usr/home/mybin/testperl
> >Can't open perl script "/usr/home/mybin/testperl": No such file or directory

>But why can't it find that?

When Cygwin sees a "#!/usr/bin/perl" line at the start of a script
called "/usr/home/mybin/testperl", it is translated to:

perl /usr/home/mybin/testperl

A non-cygwin version of perl will not understand the path
"/usr/home/mybin/testperl" if you are not running on the c: drive
since, from your mount table, /usr/home/mybin translates to
c:\usr\home\mybin.

If you are running this from a d: drive then the Windows default way
of doing things would be to interpret /usr/home/mybin/testperl as
d:\usr\home\mybin\testperl which doesn't exist, of course.

>One of the things I like about Perl is that the identical scripts can
>be run on both NT and Unix, provided I have a copy of the the perl
>program in the same place, i.e.  /usr/bin/perl
>
>Are you saying that if I am in a cygwin bash shell, and happen to be on
>a drive other than c:, my perl scripts will not work?  If this is
>really true I hope there is a workaround.  Otherwise this is a
>showstopper problem for me.  Or am I misunderstanding?

You're not misunderstanding.  Non-cygwin tools do not understand cygwin
paths.

The only fix that I am aware of is to run a cygwin version of perl.
Chuck Wilson supports a perl port at his CygUtils site.  Check out
the http://sources.redhat.com/cygwin/  "Related Software" link.

>The following shows that even running in a DOS box and in D: the perl script
>works correctly, provided I have associated the extension .pl with the Perl
>program.
>
>C:\usr\home\mybin>cat testperl.pl
>#!/usr/bin/perl
>print "hello from testperl\n";
>
>C:\usr\home\mybin>assoc .pl
>.pl=Perl
>
>C:\usr\home\mybin>d:
>
>D:\>testperl.pl
>hello from testperl

Sure.  Windows is translating this to:

Perl c:\usr\home\mybin\testperl.pl

which would work correctly.  The native Windows version of perl is getting
windows paths.

cgf

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019