2009-03-20 20 views
24

Un compañero de trabajo está tratando de usar ack (un programa de Perl) en su máquina de Windows, lo ha probado bajo Linux y decidió que definitivamente quiere usarlo. Se las arregló para obtener Strawberry Perl instalado en su máquina, pero parece que no puede averiguar qué hacer para ejecutar ack desde un símbolo del sistema. Trató de editar el #! línea, pero sabía que eso no funcionaría. Estoy bastante seguro de que Strawberry Perl está en su PATH.¿Cómo ejecuto programas con Strawberry Perl?

¿Qué necesitas hacer para ejecutar un programa general de Perl en tu PATH en Windows usando Strawberry?

Actualización: Estoy viendo información en línea sobre la variable PATHEXT, pero no lo suficiente.

+0

Retirando mi respuesta, ya que es redundante y se basa inicialmente en un malentendido de su pregunta. – Frakkle

+4

Ojalá lo hubieras dejado, Frakkle. Había una información útil para mí, ¡pero no recuerdo qué era! – skiphoppy

Respuesta

21

Primero, tenga cuidado de que el programa esté en el Path, no solo en el perl.exe. Los binarios de Perl y los programas principales generalmente terminan en <installdir>\bin, pero otros pueden terminar en el directorio específico del sitio <installdir>\site\bin. El comando

dir C:\strawberry\ack* /s 

puede ayudar con su búsqueda. Asegúrese de que su Path refleje su configuración.

Existen dos formas comunes, al menos que yo sepa, para ejecutar un programa Perl desde el Símbolo del sistema de Windows.

El primero es crear una versión por lotes del programa con pl2bat, que ejecutará perl con el programa. Los programas instalados generalmente lo hacen automáticamente porque MakeMaker y Module::Build se encargan de esto.

El segundo es crear una asociación de archivos .pl. Esto se hace mediante la creación de la clave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pl\Shell\Open\Command (o HKEY_CURRENT_USER si es sólo para el usuario actual) y establecer el valor (Default) a

"C:\strawberry\perl\bin\perl.exe" "%1" %* 

De esa manera, puede llamar a los programas con sólo nombrarlos con la extensión .pl.Ahora puede invocar el programa con program.pl.

Es posible que haya notado que puede llamar a un programa en Windows sin la extensión. El programa se busca en el Path, pero cuando no hay una extensión, PATHEXT se usa para completar el nombre. Añada .pl a la lista, y puede invocar el programa solo con program. Tenga en cuenta que el orden en esta lista es importante para la búsqueda, al igual que el orden en Path.

Los instaladores suelen ocuparse de los dos últimos pasos, pero este conocimiento es útil si desea agregar el suyo o si necesita repararlo.

1

Si ha seguido las instrucciones en this blog post, debería estar bien. No he tenido que instalar Strawberry Perl desde hace un tiempo, pero IIRC, después de instalarlo, pude usarlo igual que si estuviera en una caja Linux. (por ejemplo, perl yourscripthere.pl)

16

No he tenido un problema simplemente instalando ack y ejecutándolo desde la línea de comandos.

¿Se ha instalado Strawberry Perl correctamente? ¿Puedes ejecutar "perl" desde cmd.exe?

C:\> perl -V 
Summary of my perl5 (revision 5 version 10 subversion 0) configuration: 
    Platform: 
    osname=MSWin32, osvers=5.1, archname=MSWin32-x86-multi-thread 
... 

¿Se aplicó correctamente la aplicación :: Ack?

C:\> cpan App::Ack 
... 
Installing C:\strawberry\perl\site\lib\App\Ack.pm 
Installing C:\strawberry\perl\site\lib\App\Ack\Plugin.pm 
Installing C:\strawberry\perl\site\lib\App\Ack\Repository.pm 
Installing C:\strawberry\perl\site\lib\App\Ack\Resource.pm 
Installing C:\strawberry\perl\site\lib\App\Ack\Plugin\Basic.pm 
Installing C:\strawberry\perl\bin\ack 
Installing C:\strawberry\perl\bin\ack.bat 
Writing C:\strawberry\perl\site\lib\auto\ack\.packlist 
Appending installation info to C:\strawberry\perl\lib/perllocal.pod 
    PETDANCE/ack-1.88.tar.gz 
    C:\strawberry\c\bin\dmake.EXE install UNINST=1 -- OK 

Si es así, no veo por qué no puede funcionar "acuse de recibo" de la línea de comandos:

C:\> ack --version 
ack 1.88 

Copyright 2005-2009 Andy Lester, all rights reserved. 

This program is free software; you can redistribute it and/or modify it 
under the same terms as Perl itself. 

Si no está funcionando, donde en esa cadena son cosas rotas ? Por ejemplo, si no puede ejecutar "perl" desde la línea de comando, entonces Strawberry no se instaló correctamente (o no está en su RUTA) y tendrá que solucionarlo. Pero de lo contrario, ack se instala con un contenedor "ack.bat" en la misma ruta que "perl", por lo que si puedes ejecutar "perl" deberías poder ejecutar "ack".

+0

No instalamos la aplicación :: Ack ... instalamos la secuencia de comandos de ack independiente. Intentaré instalar App :: Ack a través de CPAN, y eso probablemente funcione en este caso, pero aún quiero saber más en general cómo hacer que esto funcione modificando PATHEXT. :) – skiphoppy

+1

Sí, instalé la aplicación :: Ack y luego copié ack.bat de perl \ site \ bin en perl \ bin (al menos, eso es lo que tenía que hacer). No es necesario modificar PATHEXT. – Frakkle

+0

Gracias, xdg. Eso lo logró para nosotros. – skiphoppy

3

Otra solución es crear ack.exe con PAR :: Packer: no necesitaría Strawberry en absoluto.

Cuestiones relacionadas