X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Message-ID: <4B6EEA2E.3050601@bopp.net> Date: Sun, 07 Feb 2010 10:28:30 -0600 From: Jeremy Bopp User-Agent: Thunderbird 2.0.0.23 (X11/20090817) MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: ActiveState Perl and Cygwin How To References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com raphael() wrote: > The problem is that AS Perl cannot find the Perl script I invoke on > the command line as the script's PATH that Cygwin reports to AS Perl > is a unix one i.e. /cygdrive/c/cygwin/home/.../bin whereas AS Perl > requires it in C:\cygwin\home\...\bin\. The Perl script is in PATH. > > This happens only with AS Perl (duh) as it requires backslash > delimited path. I have searched somewhat on the web regarding this but > haven't found anything. > There are bash scripts that act in between and convert unix path to > windows before invoking AS Perl but you still have to give it complete > script path like > > $ bash_convert.sh /home/.../bin/perlscript.pl -h > > this will give C:\Perl\bin\perl.exe C:\cygwin\home\...\bin\perlscript.pl -h > > But what I want is that it should work directly like perlscr{TAB} > {ENTER} and voilą working :) > > Any Ideas? The problem is that ActivePerl is a Windows program, and as such cannot use POSIX paths (/cygdrive/c/...) as produced by Cygwin. It has nothing to do with the slashes since Windows programs can use paths with either kind, even a mix, so long as they are Windows paths (C:\Program Files\...). You have two options available to you: 1) Use the cygpath program to convert the paths as needed so that you can send the paths to your scripts. e.g.) $ perl "$(cygpath -w /path/to/myscript.pl)" 2) Put your files into PATH and tell perl to find them for itself using the -S option. e.g.) $ perl -S myscript.pl With either option you can wrap the action you choose with another script or shell alias to hide what is actually going on so that you can get what you want when interacting with the shell. For instance, say you're going to take option 2, then you can do the following: $ alias myscript.pl="perl -S myscript.pl" Then you can run it the way you wanted with tab completion. -Jeremy -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple