=head1 NOMBRE

perlutil - Utilidades incluidas en la distribución de Perl

=head1 DESCRIPCIÓN

Además del intérprete de Perl, la distribución de Perl incluye varias
utilidades que se instalan en el sistema; algunas de ellas se usan durante el
proceso de instalación de la distribución. Este documento contiene una
descripción de las utilidades y referencias a la documentación de cada módulo
(si existe).

=head1 LISTA DE UTILIDADES

=head2 Documentación

=over 3

=item L<perldoc|perldoc>

Como ya sabe, la interfaz principal de la documentación de Perl es C<perldoc>.
F<perldoc> extrae y aplica formato a la documentación de cualquier archivo del
directorio actual, cualquier módulo Perl instalado en el sistema o cualquiera
de las páginas de documentación estándar, como ésta. Para obtener información
sobre cualquiera de las utilidades descritas en este documento, use C<perldoc
E<lt>nombreE<gt>>.

=item L<pod2man|pod2man> y L<pod2text|pod2text>

Cuando se ejecuta desde un terminal, normalmente F<perldoc> llama a F<pod2man>
para convertir el formato POD (Plain Old Documentation; consulte L<perlpod>
para ver una descripción) en una página de manual, y después ejecuta F<man>
para mostrarla; si F<man> no está disponible, se usa F<pod2text> y el resultado
se canaliza a través de su paginador favorito.

=item L<pod2html|pod2html> y L<pod2latex|pod2latex>

Hay otros dos conversores: F<pod2html> genera páginas HTML a partir de POD y
F<pod2latex> genera archivos LaTeX.

=item L<pod2usage|pod2usage>

Si sólo quiere saber cómo se usan las utilidades aquí descritas, F<pod2usage>
solo extraerá la sección "USAGE" (USO); algunas de estas utilidades llamarán
automáticamente a F<pod2usage> si las llama con el modificador C<-help>.

=item L<podselect|podselect>

F<pod2usage> es un caso especial de F<podselect>, una utilidad que permite
extraer secciones con nombre de documentos escritos en formato POD. Por
ejemplo, a diferencia de las utilidades que tienen secciones "USAGE", los
módulos Perl generalmente tienen secciones "SYNOPSIS" (SINOPSIS): C<podselect
-s "SYNOPSIS" ...> extrae la sección correspondiente de un archivo
especificado.

=item L<podchecker|podchecker>

Al redactar documentación POD puede usar la utilidad F<podchecker> para
detectar errores de marcas POD.

=item L<splain|splain>

F<splain> es una interfaz de L<perldiag>; si pega un mensaje de error, mostrará
una descripción.

=item L<roffitall|roffitall>

La utilidad C<roffitall> no se instala en el sistema, pero puede encontrarla en
el directorio F<pod/> del kit de código fuente de Perl. Esta utilidad convierte
toda la documentación de la distribución al formato F<*roff> y a partir de esto
genera código fuente PostScript o un archivo de texto.

=back

=head2 Conversores

Los tres filtros de conversión siguientes generan código Perl:

=over 3

=item L<a2p|a2p>

F<a2p> convierte scripts F<awk> en programas Perl; por ejemplo, si ejecuta
C<a2p -F:> sobre el sencillo script F<awk> C<{print $2}>, generará un programa
Perl basado en el código siguiente:

    while (<>) {
        ($Fld1,$Fld2) = split(/[:\n]/, $_, -1);
        print $Fld2;
    }

=item L<s2p|s2p> y L<psed>

De manera similar, F<s2p> convierte scripts F<sed> en programas Perl. Si se
ejecuta F<s2p> sobre C<s/foo/bar>, generará un programa Perl basado en el
código siguiente:

    while (<>) {
        chomp;
        s/foo/bar/g;
        print if $imprimir;
    }

Cuando se invoca como F<psed>, se comporta como una implementación de F<sed>
escrita en Perl.

=item L<find2perl|find2perl>

Por último, F<find2perl> traduce comandos C<find> en sus equivalentes Perl, que
usan el módulo L<File::Find|File::Find>. Por ejemplo, C<find2perl . -user root
-perm 4000 -print> genera la siguiente subrutina de devolución de llamada para
C<File::Find>:

    sub wanted {
        my ($dev,$ino,$mode,$nlink,$uid,$gid);
        (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
        $uid == $uid{'root'}) &&
        (($mode & 0777) == 04000);
        print("$nombre\n");
    }

=back

Además de estos filtros para traducir otros lenguajes, la utilidad
L<pl2pm|pl2pm> permite convertir bibliotecas de código Perl 4 antiguo en
módulos de Perl 5 modernos.

=head2 Administración

=over 3

=item L<config_data|config_data>

Permite consultar o modificar la configuración de módulos Perl que usan
archivos de configuración basados en Module::Build para características y datos
de configuración.

=item L<libnetcfg|libnetcfg>

Para mostrar y modificar la configuración de libnet, ejecute el comando
libnetcfg.

=item L<perlivp>

El programa F<perlivp> se configura en tiempo de compilación del código fuente
de Perl para comprobar la versión de Perl con la que se generó. Se puede usar
después de ejecutar C<make install> (o el procedimiento equivalente para su
plataforma) para comprobar que perl y sus bibliotecas se han instalado
correctamente.

=back

=head2 Desarrollo

A continuación se describe un conjunto de utilidades que ayudan a desarrollar
programas Perl y, en particular, a extender Perl con código C.

=over 3

=item L<perlbug|perlbug>

La manera recomendada de notificar errores del intérprete perl o de cualquier
módulo de la biblioteca estándar a sus programadores es usar F<perlbug>; pero
antes de usar F<perlbug> debe leer con atención su documentación.

=item L<perlthanks|perlthanks>

Este programa proporciona una manera sencilla de enviar un mensaje de
agradecimiento a las personas que se encargan de desarrollar y mantener perl.
No es más que F<perlbug> instalado con otro nombre.

=item L<h2ph|h2ph>

Mucho antes de que existiera en Perl el sistema XS para conectar bibliotecas C,
los programadores tenían que leer los archivos de encabezado de C para obtener
las constantes de biblioteca. Es posible que se encuentre código en el que se
usa C<require 'syscall.ph'> o algo similar; para crear el archivo F<.ph> se
debe ejecutar F<h2ph> en el archivo F<.h> correspondiente. Consulte la
documentación de F<h2ph> para obtener más información sobre la manera de
convertir varios archivos de encabezado a la vez.

=item L<c2ph|c2ph> y L<pstruct|pstruct>

F<c2ph> y F<pstruct> son en realidad el mismo programa, pero se comportan de
manera distinta en función de cómo se invoquen. Proporcionan otra manera de
incorporar código C en Perl: convierten declaraciones de estructuras y uniones
de C en código Perl. Han quedado obsoletos desde que surgió F<h2xs>.

=item L<h2xs|h2xs>

F<h2xs> convierte archivos de encabezado de C en módulos XS y agrega gran parte
del código necesario para la comunicación entre bibliotecas C y módulos Perl.
También resulta muy útil para crear la estructura inicial de módulos Perl
puros.

=item L<enc2xs>

F<enc2xs> genera una extensión Perl para Encode a partir de archivos de
asignación de caracteres Unicode (.ucm) o de archivos de codificación Tcl
(.enc). F<enc2xs> se usa internamente durante el proceso de compilación del
módulo Encode; también lo puede usar para agregar su propia codificación a
perl. Para ello no tiene que saber cómo funciona XS.

=item L<xsubpp>

F<xsubpp> es un compilador que permite convertir código XS de Perl en código C.
Lo suelen ejecutar los archivos makefile generados por L<ExtUtils::MakeMaker>.
F<xsubpp> compila el código XS y genera código C; para ello, incrusta las
construcciones necesarias para que las funciones C puedan manipular valores
Perl y agregar el código necesario para que Perl pueda acceder a esas
funciones.

=item L<dprofpp|dprofpp>

Perl incluye un perfilador, el módulo F<Devel::DProf>. La utilidad F<dprofpp>
analiza los resultados del perfilador e indica cuáles son las subrutinas que
consumen más tiempo. Consulte L<Devel::DProf> para obtener más información.

=item L<prove>

F<prove> es una interfaz de línea de comandos de la funcionalidad de ejecución
de tests de F<Test::Harness>. Es una alternativa a C<make test>.

=item L<corelist>

Este front-end de línea de comandos de C<Module::CoreList> permite consultar la
lista de módulos incluidos en versiones específicas de perl.

=back

=head2 Herramientas de propósito general

También se distribuyen con perl algunas herramientas de propósito general,
básicamente porque forman parte de módulos incluidos en la distribución de
perl.

=over 3

=item L<piconv>

B<piconv> es una versión Perl de B<iconv>, un conversor de codificaciones de
caracteres de uso muy extendido en el mundo Unix. Este script se desarrolló
simplemente como una demostración de tecnología para Perl 5.8.0, pero puede
usar piconv para cualquier tarea para la que usaría iconv.

=item L<ptar>

F<ptar> es un programa tar escrito en código Perl puro.

=item L<ptardiff>

F<ptardiff> es una pequeña utilidad que genera las diferencias entre un archivo
de almacenamiento extraído y uno sin extraer. (Tenga en cuenta que esta
utilidad requiere el módulo C<Text::Diff> para funcionar correctamente; este
módulo no se distribuye con perl, pero está disponible en CPAN.)

=item L<ptargrep>

F<ptargrep> es una utilidad que aplica detección de patrones al contenido de un
archivo de almacenamiento tar.

=item L<shasum>

Esta utilidad, que se incluye con el módulo C<Digest::SHA>, se usa para
imprimir o comprobar sumas de control SHA.

=back

=head2 Instalación

Estas utilidades ayudan a administrar módulos Perl adicionales que no se
incluyen en la distribución de perl.

=over 3

=item L<cpan>

F<cpan> es una interfaz de línea de comandos de CPAN.pm. Permite hacer muchas
cosas, como instalar módulos o distribuciones de CPAN, o simplemente obtener
información sobre ellas. Es similar al modo de línea de comandos del módulo
L<CPAN>,

    perl -MCPAN -e shell

=item L<cpanp>

F<cpanp> es otra interfaz de línea de comandos de CPAN (una alternativa a
F<cpan>) que usa el módulo C<CPANPLUS> como back-end. Se puede usar de manera
interactiva o imperativa.

=item L<cpan2dist>

F<cpan2dist> es una herramienta que permite crear distribuciones (o paquetes)
compatibles con distintos administradores de paquetes a partir de módulos de
CPAN. El código de compatibilidad con los distintos formatos específicos se
encuentra en los módulos C<CPANPLUS::Dist::*> de CPAN.

=item L<instmodsh>

Esta utilidad ofrece una interfaz sencilla de ExtUtils::Installed, que permite
examinar módulos instalados, validar las listas de paquetes e incluso crear un
archivo de almacenamiento tar a partir de un módulo instalado.

=back

=head1 VEA TAMBIÉN

L<perldoc|perldoc>, L<pod2man|pod2man>, L<perlpod>, L<pod2html|pod2html>,
L<pod2usage|pod2usage>, L<podselect|podselect>, L<podchecker|podchecker>,
L<splain|splain>, L<perldiag>, L<roffitall|roffitall>, L<a2p|a2p>, L<s2p|s2p>,
L<find2perl|find2perl>, L<File::Find|File::Find>, L<pl2pm|pl2pm>,
L<perlbug|perlbug>, L<h2ph|h2ph>, L<c2ph|c2ph>, L<h2xs|h2xs>,
L<dprofpp|dprofpp>, L<Devel::DProf>, L<enc2xs>, L<xsubpp>, L<cpan>, L<cpanp>,
L<cpan2dist>, L<instmodsh>, L<piconv>, L<prove>, L<corelist>, L<ptar>,
L<ptardiff>, L<shasum>

=cut

=head1 TRADUCTORES

=over

=item * Joaquín Ferrero (Tech Lead), C< explorer + POD2ES at joaquinferrero.com >

=item * Enrique Nell (Language Lead), C< blas.gordon + POD2ES at gmail.com >

=back

