سؤال

وهناك زميل يحاول استخدام ACK (وبرنامج بيرل) على آلة ويندوز له، بعد أن حاولت ذلك في لينكس، وقررت إنه بالتأكيد يريد استخدامها. وتمكن من الحصول على الفراولة بيرل وتثبيتها على جهازه، ولكن لا يمكن أن يبدو لمعرفة ما يجب القيام به لجعل الكلية الاسترالية تدير معها من موجه الأوامر. حاول تحرير #! الخط، ولكن كنت أعرف أنه لن يعمل. أنا متأكد من الفراولة بيرل هو في طريقه.

وماذا عليك القيام به لتشغيل برنامج بيرل العام في PATH الخاص بك على ويندوز باستخدام الفراولة؟

تحديث: اراه بعض المعلومات على الانترنت حول متغير PATHEXT، ولكن ليس بما فيه الكفاية

هل كانت مفيدة؟

المحلول

أولا، يجب الحرص على أن البرنامج في Path، وليس فقط perl.exe. ثنائيات بيرل والبرامج الأساسية عادة ما تنتهي في <installdir>\bin، ولكن البعض الآخر قد تنتهي في الموقع <installdir>\site\bin دليل محددة. الأمر

dir C:\strawberry\ack* /s

وقد تساعد بحثك. تأكد Path الخاص يعكس الإعداد.

وهناك نوعان من الطرق الشائعة، على الأقل أن أعرف، لتشغيل برنامج بيرل من موجه الأوامر ويندوز.

والأول هو إنشاء نسخة دفعة من برنامج مع <لأ href = "http://search.cpan.org/~rgarcia/perl-5.10.0/win32/bin/pl2bat.pl" يختلط = " noreferrer "> pl2bat ، والذي سينفذ perl مع البرنامج. البرامج المثبتة عادة ما تفعل ذلك تلقائيا لMakeMaker وModule::Build رعاية هذا.

والثاني هو إنشاء اقتران ملف .pl. ويتم ذلك عن طريق إنشاء السجل HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pl\Shell\Open\Command مفتاح (أو HKEY_CURRENT_USER لو كان للمستخدم الحالي فقط) وتعيين القيمة (Default) إلى

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

وبهذه الطريقة، يمكنك الاتصال برامج فقط عن طريق تسمية لهم تمديد .pl. الآن يمكنك استدعاء البرنامج مع program.pl.

وكنت قد لاحظت أن يمكنك استدعاء البرنامج على ويندوز من دون التمديد. يتم البحث برنامج في Path، ولكن عندما يكون هناك أي تمديد، يتم استخدام PATHEXT لاستكمال الاسم. إلحاق .pl إلى القائمة، ويمكنك استدعاء البرنامج فقط مع program. لاحظ أن النظام في هذه القائمة مهم للبحث، كما أن النظام في المسائل Path.

والتركيب عادة ما تأخذ الرعاية من الخطوات الماضيين، ولكن هذه المعرفة مفيدة إذا كنت ترغب في إضافة الخاصة بك أو الحاجة إلى إصلاحه.

نصائح أخرى

ولم تتح لي مشكلة فقط تركيب ACK والتي تعمل من سطر الأوامر.

هل الفراولة بيرل مثبتة بشكل صحيح؟ يمكنك تشغيل "بيرل" من 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
...

هل التطبيقات :: 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

وإذا كان الأمر كذلك، وأنا لا أرى لماذا لا يمكنك تشغيل "إعلام" من سطر الأوامر:

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.

إذا كان لا يعمل، حيث في تلك السلسلة وكسر الأشياء؟ على سبيل المثال، إذا كنت لا يمكن تشغيل "بيرل" من سطر الأوامر، ثم الفراولة لم يتم تثبيت بشكل صحيح (أو ليست في PATH الخاص بك) وستحتاج لإصلاح ذلك. لكن على خلاف ذلك، ويحصل على تثبيت ACK مع "ack.bat" المجمع في نفس الطريق كما "بيرل"، حتى لو كنت تستطيع تشغيل "بيرل" يجب أن تكون قادرة على تشغيل "ACK".

وهناك حل آخر هو خلق ack.exe مع PAR :: باكر - انه لن تحتاج الفراولة على الإطلاق

إذا انه يتبع الإرشادات في <لأ href = "http://perlbuzz.com/2008/01/how-to-install-and-set-up-strawberry-perl.html" يختلط = "نوفولو noreferrer" > هذا بلوق وظيفة ، وقال انه ينبغي أن يكون على ما يرام. لم تتح لي لتثبيت الفراولة بيرل لبعض الوقت الآن، ولكن IIRC، بعد أن تثبيته وكنت قادرا على استخدامه مثلما كنت لو كنت على مربع لينكس. (على سبيل المثال perl yourscripthere.pl)

و1.Install الفراولة بيرل 2.Open فلكس بيرل قيادة 3.Write بيرل test.pl

خطوات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top