web-dev-qa-db-fra.com

Comment exécuter des programmes avec Strawberry Perl?

Un collègue essaie d'utiliser ack (un programme Perl) sur sa machine Windows, après l'avoir essayé sous Linux et décidé qu'il voulait vraiment l'utiliser. Il a réussi à obtenir Strawberry Perl installé sur sa machine, mais n'arrive pas à comprendre quoi faire pour faire fonctionner ack à partir d'une invite de commande. Il a essayé de modifier le #! ligne, mais je savais que cela ne fonctionnerait pas. Je suis sûr que Strawberry Perl est dans son PATH.

Que devez-vous faire pour exécuter un programme Perl général dans votre PATH sous Windows en utilisant Strawberry?

Mise à jour: je vois des informations en ligne sur la variable PATHEXT, mais pas assez.

27
skiphoppy

Tout d'abord, veillez à ce que le programme soit dans le Path, pas seulement dans Perl.exe. Les binaires Perl et les programmes de base se retrouvent généralement dans <installdir>\bin, mais d'autres peuvent se retrouver dans le répertoire spécifique au site <installdir>\site\bin. La commande

dir C:\strawberry\ack* /s

pourrait faciliter votre recherche. Assurez-vous que votre Path reflète votre configuration.

Il existe deux façons courantes, au moins que je connaisse, d'exécuter un programme Perl à partir de l'invite de commande Windows.

La première consiste à créer une version batch du programme avec pl2bat , qui exécutera Perl avec le programme. Les programmes installés le font généralement automatiquement car MakeMaker et Module::Build prend soin de ça.

La seconde consiste à créer un .pl association de fichier. Pour ce faire, créez la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pl\Shell\Open\Command (ou HKEY_CURRENT_USER si c'est pour l'utilisateur actuel uniquement) et définissez le (Default) valeur à

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

De cette façon, vous pouvez appeler des programmes simplement en les nommant avec le .pl extension. Vous pouvez maintenant appeler le programme avec program.pl.

Vous avez peut-être remarqué que vous pouvez appeler un programme sous Windows sans l'extension. Le programme est recherché dans Path, mais quand il n'y a pas d'extension, PATHEXT est utilisé pour compléter le nom. Ajouter .pl dans la liste, et vous pouvez appeler le programme simplement avec program. Notez que l'ordre dans cette liste est important pour la recherche, tout comme l'ordre dans Path compte.

Les installateurs s'occupent généralement des deux dernières étapes, mais cette connaissance est utile si vous souhaitez ajouter la vôtre ou si vous avez besoin de la réparer.

21
Ronald Blaschke

Je n'ai pas eu de problème à installer ack et à l'exécuter à partir de la ligne de commande.

Strawberry Perl est-il correctement installé? Pouvez-vous exécuter "Perl" à partir de 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
...

App :: Ack s'est-il installé correctement?

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 tel est le cas, je ne vois pas pourquoi vous ne pouvez pas exécuter "ack" depuis la ligne de commande:

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 cela ne fonctionne pas, où dans cette chaîne les choses sont-elles cassées? Par exemple, si vous ne pouvez pas exécuter "Perl" à partir de la ligne de commande, alors Strawberry ne s'est pas installé correctement (ou n'est pas dans votre PATH) et vous devrez corriger cela. Mais sinon, ack est installé avec un wrapper "ack.bat" dans le même chemin que "Perl", donc si vous pouvez exécuter "Perl", vous devriez pouvoir exécuter "ack".

17
xdg

Une autre solution est de créer ack.exe avec PAR :: Packer - il n'aurait pas du tout besoin de Strawberry.

3

S'il a suivi les instructions de ce billet de blog , il devrait aller bien. Je n'ai pas eu à installer Strawberry Perl depuis un moment maintenant, mais IIRC, après l'avoir installé, j'ai pu l'utiliser comme je le ferais si j'étais sur une machine Linux. (par exemple. Perl yourscripthere.pl)

1
George Stocker

1.Installez Strawberry-Perl 2.Ouvrez Perl Commandline 3.Ecrivez la commande Perl test.pl

étapes

0
sushma_chorghade