• Publicidad

Uso del Perl Power Tools

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Uso del Perl Power Tools

Notapor zolidus » 2015-07-27 05:54 @287

PerlPowerTools proporciona la implementación en Perl de las herramientas estándar de UNIX (cat,grep,cut,..).
En la documentación desafortunadamente no se incluyen ejemplos de los usos de estos comandos (en Perl).

Mi duda es sobre cómo utilizar estas implementaciones dentro de un script de Perl (en caso que se pueda).
La instalación de este módulo a partir de los repositorios mediante línea de comandos
(cpanm PerlPowerTools) no representa ningún problema. En la carpeta de instalación se encuentran los
subdirectorios "lib", "man" y "bin", siendo en esta última donde se encuentran los scripts de Perl.

Ejecutando dichos scripts desde la línea de comandos "./cat -n archivo1 archivo2 (por ejemplo)" obtengo las
salidas que podría esperar de los respectivos comandos de UNIX.

Mi duda es sobre si se pueden cargar dichas herramientas en la ejecución de un script de Perl,
algo como esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use 5.14.2;
  3. use strict;
  4. local::lib;
  5. use PerlPowerTools;
  6.  
  7. # Saber la línea en la cual aparece palabra en documento
  8. my $line = "cat -n archivo | grep palabra | cut -f 1";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Sé que lo anterior se puede realizar mediante el comando system() o directamente utilizando las comillas invertidas
`` (suponiendo que perl corre en UNIX). Les agradecería mucho cualquier información que pudieran proporcionarme al respecto.
zolidus
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2014-01-30 19:45 @864

Publicidad

Re: Uso del Perl Power Tools

Notapor explorer » 2015-07-27 11:45 @531

Hay documentación por cada herramienta, pero si no hay ejemplos, es quizás porque lo que aparece en la sección SYNOPSIS es suficiente para entender cómo usarlos.

Otra forma de obtener más documentación es mirando las páginas de manual de los comandos del sistema que se llamen igual. Por ejemplo, man tr

También, en la carpeta de test, hay unos pocos ejemplos de cómo acceder a ellos.

La forma de utilizarlos en Perl ya te lo dice en la página de manual de PerlPowerTools: úsalos de la misma manera en que usarías los comandos del sistema. Eso quiere decir que deberás usar comillas invertidas (o qx(), que es lo mismo) o system(). La única preocupación es que deberás asegurarte que estás accediendo a la ruta correcta, en lugar de usar el $PATH por defecto, y por tanto, estás usando los comandos del sistema.

En sistemas como Windows, como no suelen tener instalados los comandos del sistema que tenemos en UNIX/Linux, pues es más fácil detectar ese caso.

De todas maneras, el uso principal de estas herramientas no son para que sean usadas dentro de scripts, sino para ser usadas desde la línea de comandos en aquellos sistemas que no los tienen (como el caso de Windows). Principalmente, porque Perl es capaz de resolver esos problemas de forma más eficiente y rápida que llamar a comandos externos.

En el ejemplo que has puesto, usas tres comandos para saber en qué líneas aparece una palabra. Eso mismo se puede resolver escribiendo un poquito más:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. open FILE, '<kk.txt';
  3. while (<FILE>) {
  4.     if (/palabra/) {
  5.         print "$.\n";
  6.         last;
  7.     }
  8. }
  9. close FILE;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

o más reducido:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. open FILE, 'kk.txt';
  3. while (<FILE>) {
  4.     print "$.\n" and last if /palabra/
  5. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Así te ahorras tres llamadas externas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados