كيف يمكنني العثور على نسخة من تثبيت بيرل الوحدة ؟
سؤال
كيف يمكنك العثور على نسخة من تثبيت بيرل الوحدة ؟
هذا هو الجواب في الأسفل, ولكن أعتقد أنه من المهم بما فيه الكفاية للعيش هنا.مع هذه الاقتراحات ، أنا خلق وظيفة في بلدي .bashrc
function perlmodver {
perl -M$1 -e 'print "Version " . $ARGV[0]->VERSION . " of " . $ARGV[0] . \
" is installed.\n"' $1
}
المحلول
لماذا تحاول الحصول على نسخة من الوحدة ؟ هل تحتاج هذه من داخل البرنامج ، هل تحتاج فقط عدد لتمرير عملية أخرى ، أو تحاول معرفة ما لديك ؟
لدي هذا صلب cpan
(الذي يأتي مع بيرل) مع -D
التبديل حتى تستطيع أن ترى النسخة التي لديك تثبيت الإصدار الحالي على CPAN:
$ cpan -D Text::CSV_XS Text::CSV_XS ------------------------------------------------------------------------- Fast 8bit clean version of Text::CSV H/HM/HMBRAND/Text-CSV_XS-0.54.tgz /usr/local/lib/perl5/site_perl/5.8.8/darwin-2level/Text/CSV_XS.pm Installed: 0.32 CPAN: 0.54 Not up to date H.Merijn Brand (HMBRAND) h.m.brand@xs4all.nl
إذا كنت تريد أن ترى جميع من خارج التاريخ وحدات, استخدام -O
(رأس المال س) التبديل:
$ cpan -O Module Name Local CPAN ------------------------------------------------------------------------- Apache::DB 0.1300 0.1400 Apache::SOAP 0.0000 0.7100 Apache::Session 1.8300 1.8700 Apache::SizeLimit 0.0300 0.9100 Apache::XMLRPC::Lite 0.0000 0.7100 ... and so on
إذا كنت تريد أن ترى هذا لجميع وحدات تثبيت محاولة -a
تبديل لخلق autobundle.
نصائح أخرى
معظم وحدات (وخاصة تلك التي من CPAN) وقد دولار الإصدار متغير:
perl -MSome::Module -le 'print $Some::Module::VERSION'
الإصدار هو العالمي طريقة كل بيرل الطبقات.يمكنك استخدامه للحصول على إصدار الوحدة النمطية (إذا كان قد تم ضبطه التي عادة).
هنا هو واحد بطانة حيث لديك فقط لإضافة اسم وحدة مرة واحدة:
perl -le 'eval "require $ARGV[0]" and print $ARGV[0]->VERSION' Some::Module
هناك أقل-كتابة خدعة ، أن يعمل على توفير الوحدة النمطية الخاص بك لا يكون شيء مجنون مثل Unix timestamp مثل رقم الإصدار.
perl -MFoo::Bar\ 9999
يعمل هذا لأن ما يترجم إلى هو
use Foo::Bar 9999;
أينسخة من فو::شريط هذا على الأقل نسخة 9999 أو أحدث.وما تحصل عليه
Foo::Bar version 9999 required--this is only version 1.1.
BEGIN failed--compilation aborted.
(خدعة تعلمتها من مات سمك السلمون المرقط.)
إذا كنت محظوظا, وحدة سوف يكون حزمة متغير اسمه $الإصدار:
$ perl -MCPAN -e 'print "$CPAN::VERSION\n"'
1.9205
هذا هو الحاجة إلى الوحدات التي سيتم توزيعها على CPAN, ولكن داخليا وضعت وحدات قد تتبع مختلف الاتفاقية أو لا شيء على الإطلاق.
شكرا على الأجوبة!لقد خلق وظيفة في بلدي .bashrc بسهولة العثور على نسخة من وحدة Perl:
function perlmodver {
perl -M$1 -e 'print $ARGV[0]->VERSION . "\n"' $1
}
تحقق من pmtools البرامج النصية على CPAN.إذا كنت تستخدم دبيان (القائم) توزيعة هناك أيضا مفيد pmtools حزمة.يتضمن هذا السيناريو "pmvers" أن يقول لك وحدة الإصدار.إنه مفيد جدا.
فإنه لا شيء على غرار مختلف واحد المتشددين الناس نشر, لكنه أذكى قليلا عن معالجة الخطأ, و يمكن أن تعطيك النسخة من أكثر من وحدة واحدة في وقت واحد.
كتبت نصي صغير إلى تقرير أن: perlver.
هذا هو أداة بسيطة صغيرة يقول لك ما هو إصدار وحدة لك تثبيت ومن فيها .مساء الملف يقع.كما يضمن وحدة يمكن تحميلها بنجاح.ذلك تلقائيا بتحويل '-', '/', أو '\' إلى '::', بحيث يمكنك استخدام المسار أو توزيع اسم بدلا من الكنسي اسم الوحدة النمطية.
فإنه يفترض أن وحدة يعرف $الإصدار.إذا كانت وحدة لا تحدد بقيمة الإصدار ، لن أقول لكم أين .pm
ملف, حتى تتمكن من دراسة ذلك يدويا.يمكنك أيضا التحقق من عدة وحدات في وقت واحد:
$ perlver CPAN DBD-Pg Getopt::Long
CPAN 1.7602 is
/usr/lib/perl5/5.8.8/CPAN.pm
DBD::Pg 1.49 is
/usr/lib/perl5/vendor_perl/5.8.8/i686-linux/DBD/Pg.pm
Getopt::Long 2.36 is
/usr/lib/perl5/vendor_perl/5.8.8/Getopt/Long.pm
الأسهل أن نتذكر و أقوى نسخة بالنسبة لي:
perl -e 'use Search::Elasticsearch; print $Search::Elasticsearch::VERSION;'
وبالإضافة إلى ذلك ، على الوحدات التي تستخدم مصدر.بعد الظهر, يمكنك الحصول على هذه المعلومات مع هذه الخدعة:
perl -MSome::Module=99999 -ex
Some::Module version 99999 required--this is only version 1.9205 at ...
لوحدات التي لا تستخدم مصدر.مساء أطول قليلا خدعة التقارير نفس المعلومات:
perl -e'use Some::Module 99999'
Some::Module version 99999 required--this is only version 1.9205 at ...
لدينا نظام بيرل (/usr/bin/perl) في سولاريس 10, وقبل حلول غير مجدية.بعض منهم تقرير "وحدة نمطية.مساء لم يتم تثبيت" بعض منهم لديهم أي الإخراج.
هنا هو رمز وهي مفيدة التي يمكن أن قائمة جميع وحدات النسخة الخاصة.
#!/usr/bin/perl
use strict;
use ExtUtils::Installed;
my @modules;
my $installed = ExtUtils::Installed->new();
if (scalar(@ARGV) > 0) {
@modules = @ARGV;
} else {
@modules = $installed->modules();
}
print "Module\tVersion\n";
foreach (@modules) {
print $_ . "\t" . $installed->version($_) . "\n";
}
يمكنك أيضا أن تأخذ نظرة على التطبيق::وحدة::نسخة
$ module-version
The version of App::module::version in /home/yourself/perl5/lib/perl5 is 1.004