metacpan - perl package manager
¿Qué módulos se distribuyen con Perl? (8)
Una referencia simple para esto está en el Apéndice D del libro Beginning Perl . De acuerdo, se aplica a Perl 5.6 pero, que yo sepa, Perl 5.8 no eliminó ninguno de estos y solo introdujo otros nuevos (como Digest :: MD5, File :: Temp, Filter :: Simple, libnet, List :: Util, Memoize , MIME :: Base64, Scalar :: Util, Storable, Switch, Test :: More, Test :: Simple, Text :: Balanced, Tie :: File, etc.)
Para cada versión de perl, puede buscar en perldoc . aquí está la lista de perl 5.8.8
¿Cómo sé qué módulos se distribuyen con Perl?
Mi primera suposición es que los módulos principales que figuran aquí están siempre incluidos, aunque no puedo encontrar esto explícitamente. Sin embargo, he utilizado módulos fuera de este conjunto (por ejemplo, LWP) sin tener que instalarlos en Mac OS X y Linux.
Así que para refinar mi pregunta un poco:
- ¿Qué módulos se distribuyen con todas las instalaciones de Perl?
Y: ¿Cómo averiguo con qué módulos se han distribuido?
Linux (particularmente Debian / Ubuntu)?
¿Mac OS X?
Solaris?
En cada caso, estoy usando la versión de Perl que viene de serie con la versión más reciente del sistema operativo.
TIA.
Actualización: El motivo de la pregunta es que estoy desarrollando en Mac OS X y Linux para su implementación en diferentes Linux y Solaris, y no tengo root en algunos de estos sistemas, y en el caso de Mac OS XI no incluso tener un compilador AFAIK. Entonces, quiero saber qué módulos tengo disponibles en las cuatro implementaciones sin más instalaciones.
mira en tu tabla de símbolos principales, te mostrará todos los paquetes ''estándar'' disponibles ...
print %main::;
Module :: CoreList ya ha sido mencionado. Viene con una interfaz de línea de comandos para facilitar las cosas. Es genial si ya lo tienes instalado, o si tienes un programa que necesita descubrir qué puede no venir con una versión particular de Perl.
Si desea saber qué módulos vienen con su versión particular de perl, puede ejecutar perldoc perlmodlib
en la línea de comandos para obtener una lista completa. Para versiones anteriores o posteriores de Perl, puede ir a la página de Perl en el CPAN y seleccionar la versión que desee (por ejemplo, 5.6.2) desde el menú desplegable, y luego navegar a la página perlmodlib
en la documentación. ( perlmodlib
en la búsqueda de texto de su navegador lo ayudará).
Si está pensando en no usar un módulo porque no es esencial en una versión anterior de Perl, entonces puede considerar usar PAR, el Archivador de Perl , para agrupar sus dependencias adicionales, ¡o incluso Perl mismo! Perl Training Australia también tiene una sugerencia de Perl sobre el uso de PAR que cubre los aspectos básicos sobre cómo comenzar con PAR.
Todo lo mejor,
Pablo
Las respuestas correctas ya han sido dadas, pero creo que has hecho la pregunta incorrecta. Probablemente estés tratando de desarrollar usando solo módulos centrales. ¿Por qué? Probablemente estés haciendo esto porque no quieres ocuparte de las dependencias. ¿Por qué? Porque pueden ser un dolor en el culo. Pero desarrollar Perl sin CPAN le falta la mitad del poder. Estás paralizando a ti mismo. Vale la pena.
Actualización : ahora que sé más sobre lo que estás tratando de hacer, puedo responder la pregunta correcta. Primero, ¿cómo instalo un módulo cuando no tengo root? La respuesta simple es esta:
perl Makefile.PL PREFIX=/some/path LIB=/some/path/lib
...and all the rest as normal...
para los módulos basados en MakeMaker (LIB se utiliza para controlar la naturaleza inexacta de PREFIX. Se prefiere INSTALL_BASE, pero no es compatible con versiones anteriores).
y esto para Module :: Build
perl Build.PL --install_base=/some/path
y luego los módulos terminarán en / some / path / lib y usted puede configurar la variable de entorno PERL5LIB
o use lib qw(/some/path/lib)
en su código.
Esto significa que puede pegar los módulos dependientes directamente en su distribución de software y enviarlos. Funciona bien para módulos Pure-Perl. Para cosas que requieren un compilador, mira PAR ya que otros han sugerido poder enviar ejecutables compilados.
Alternativamente, puede distribuir sus cosas como un módulo de CPAN, completar con las dependencias explicadas y dejar que un cliente de CPAN las resuelva. Incluso puede usar Module :: AutoInstall para realizar este proceso fuera de un cliente de CPAN.
Como puede ver, no está restringido a usar solo módulos principales al enviar una aplicación Perl.
Esta pregunta es un poco menos importante ahora (tengo acceso de root en la eventual máquina de destino, así que solo instalaré los paquetes que necesito) pero en caso de que alguien esté interesado, esto es lo que hice:
Primero, ejecute este código en cada uno de los sistemas de destino:
foreach my $dir (@INC) {
print "Directory: $dir/n";
if (-d "$dir") {
my @modules = `find $dir/ -name "*.pm"`;
foreach my $m (@modules) {
my $label = $m;
$label =~ s|/n$||;
$label =~ s|//+|/|g;
$label =~ s|^$dir/||;
print "$label/n";
}
}
}
Tenga en cuenta que necesita un sistema * nix con un comando de búsqueda. Vuelque la salida en tres archivos, ordenados. Luego use comandos como este (desde la memoria):
grep -F -x -f list-1.txt list2.txt > list-12.txt
grep -F -x -f list-12.txt list3.txt > list-123.txt
Ahora list-123.txt debería tener la lista de módulos compartidos, más o menos.
Por lo que vale, los tres sistemas compartieron algunos módulos adicionales, especialmente los módulos XML :: Parser.
Para una forma rápida de ver los módulos y versiones que ha instalado, use la herramienta cpan para crear un libro de texto:
cpan -a
ExtUtils :: Installed puede ayudarlo si necesita algo más sofisticado.
Solía haber la idea de una "biblioteca estándar", pero realmente no existe en la realidad. Módulo :: CoreList le dice lo que está en la "biblioteca estándar", pero muchos proveedores instalan módulos adicionales y algunos incluso eliminan o actualizan módulos. Además, distribuciones como Strawberry Perl y ActivePerl vienen con muchos módulos adicionales.
Además, no necesita root para instalar módulos. Solo necesita root para instalar módulos donde root puede instalar módulos. perlfaq8 le brinda todos los detalles para instalar los módulos donde lo desee. Recomiendo que instale todos los módulos fuera de los directorios @INC distribuidos para que mantenga limpio Perl distribuido.
Buena suerte,
Parece que quieres local :: lib . Todos los beneficios de cpan sin raíz (y deja el sistema perl intacto).
Si instala Module :: CoreList , la lista de corelist
programa de línea de corelist
puede decirle todo sobre los módulos y sus versiones en diferentes versiones de Perl. La página a la que vinculó brinda una descripción general de la última versión de perl.
Tenga en cuenta que las distribuciones a menudo proporcionan mucho más por defecto que esta lista, pero se puede suponer que esta lista está presente en todas partes (a menos que explícitamente sea un módulo dependiente del sistema operativo como Win32).