Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com From: Chris Faylor 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: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2i In-Reply-To: ; 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