2012-01-18 9 views
7

Nie mam dostępu do roota na zdalnym polu, nad którym pracuję, więc używam kombinacji cpanm i local :: lib, jak opisano here, aby zainstalować moduły CPAN do mojego lokalnego katalogu na tym polu. Używając cpanma, zakładam, że cpanm Module::To::Update zainstalowałbym najnowszą wersję modułu w mojej lokalnej bibliotece.Co robi Perl, gdy są zainstalowane dwie wersje modułu?

Wygląda na to, że nie potrzebuję uprawnień roota do aktualizacji modułów z CPAN, ponieważ właśnie go wypróbowałem, a uaktualnienie poszło kipiąco. Jednak nadal jestem ciekawy, z której wersji modułu Perl skorzysta: wersja lokalna lub domyślna wersja CPAN? A może po prostu skorzysta z tego, co będzie nowsze?

Jeśli istnieje w Perldoc lub Stack Overflow, również bym to docenił. Próbowałem przeszukać oba, ale nie udało mi się go znaleźć =/

Odpowiedz

13

Używa pierwszego znalezionego podczas wyszukiwania w kolejności: @INC.

+0

oh. To całkiem proste. I prawdopodobnie określenie 'use Module Version' pozwoliłoby mi wybrać, które chciałbym ręcznie. Dzięki. – gempesaw

+4

@dgempesaw - To domniemanie byłoby niepoprawne. Jeśli musisz załadować konkretny moduł z określonego miejsca, musisz zhakować na '@ INC' lub'% INC' (Istnieje wiele sposobów, aby to zrobić. Jak to zrobić, aby uzyskać dobre pytanie uzupełniające). – mob

+4

@dgempesaw, Aby znaleźć wersję modułu, Perl musi wykonać moduł. Moduł nie może być niewykonany, jeśli nie jest właściwą wersją. – ikegami

0

można sprawdzić, uruchamiając w ten linux:

perl -e 'use <module>; print $<module>::VERSION;'