2012-02-09 20 views
5

yüklü modülün listesini kontrol edin.Ben modülün liste makinede yüklü olması gereken yönetici samimi için bir komut dosyası yaptık makinesinde

Ben modül underbelow kod tarafından yüklenen her türlü hava şartlarına kontrol çalışıyorum. Garip olan şey ise Sen require çift kolon ayrılmış forma karşı eşleştirmek için bir bareword argüman gerektiğinden eval dize formunu kullanmanız gerekir not installed

#!/usr/bin/perl -w 
    my @module_list =('Smart::Comments','HTML::Parse'); 
    foreach (@module_list) { 
     eval { require "$_" }; 
     if (!([email protected])) { 
     print "Module Not installed : $_\n"; 
     } 
    } 

cevap

5

olarak makinede bile yüklü modül gösteren olmasıdır modül adı (örneğin Scalar::Util). (Bir bareword değilse, o zaman göreli bir yol olması gerekir, örneğin 'Scalar/Util.pm')

#!/usr/bin/perl 

use strict; 
use warnings; 

my @module_list = ('Scalar::Util', 'flibble'); 

foreach (@module_list) { 
    if (!eval "require $_") { 
     print "Module not installed: $_\n"; 
    } 
} 
+0

'defined' gerekli değildir. – ikegami

+2

'require' bir bareword değil bir ifade kabul etmemektedir, ama bir dosya adına değerlendirmek gerekir. (ör. "Akıllı :: Yorumlar" yerine "Akıllı/Yorumlar") – ikegami

1

, bir modül, bir komut satırı yardımcı olarak çalışabilir bir modulino olarak tasarlanan benim App::Module::Lister var, ya bir CGI betiği. Sadece bir web sunucusuna FTP erişimi olan bir arkadaşım için ihtiyacım olan basit bir şey. Size genellikle belirli modülleri için her seferinde kontrol daha kolay bulmak Perl modül arama yolunda, her şeyin listesini verir

. Bütün listeye girdikten sonra sadece listeye bakıyorum.

, modülünü yükleyebildiğinizi kontrol eder, ancak ben bunu sevmemeye eğilimliyim çünkü modülün yüklü olup olmadığını görmek için modülün kodunu çalıştırmak istemiyorum. Yine de genellikle sorun değil.

İlgili konular