sábado, 1 de diciembre de 2012

Saber información del sistema con Perl

Ayer vimos como mostrar la información de nuestro sistema usando python,hoy lo haremos con perl,no es una comparación de lenguajes ni nada así,solo pretendo mostrar como obtener información de nuestro sistema usando perl.

En perl no necesitamos importar nuestro sistema como con python,bueno de hecho hay un modulo llamado Sys::Info en cpan,pero no lo he usado y se tiene que instalar,ademas se ve un poco complejo:

Enlace

Lo único que haremos es usar comillas invertidas,como se hace en el scripting shell,ayer vimos como se hacia de perl a python ahora de shell a perl:

En la shell de Unix no necesitamos usar nada,ya que los mismos comandos son los que muestran la información como por ejemplo para saber el nombre de usuario solo hacemos

whoami

Y listo :D

Ahora en la shell scripting tambien se puede hacer asi,pero no definimos ese dato en ninguna variable:

Por ejemplo

#!/bin/bash

whoami

echo "Tu usuario es :"

Esto nos imprime la salida de whoami pero no donde la queremos,que seria delante de la cadena de texto.

Para hacer estodebemos encerrar nuestro comando en comillas invertidas y usar una variable avanzada:

: ${usuario:=`whoami`

Y listo



#!/bin/bash

: ${usuario:=`whoami`}

echo "Tu usuario es : $usuario"

Así se hace en el shell scripting y como perl reúne lo mejor de sh,C,awk entre otros, también podemos hacer uso de las comillas invertidas :D

Lo que hacen las comillas invertidas es llamar comandos del sistema, así que si lo hacemos desde windows tendríamos que definir comandos de CMD


Lo único que necesitamos hacer es definir nuestro comando en una variable y luego llamarlo

Aquí el ejemplo:

#!/usr/bin/env perl

use strict;
use warnings;
use utf8;


my $usuario = `whoami`;
my $locacion = `pwd`;
my $kernel = `uname`;
my $release = `uname -r`;
my $fecha = `date`;

print "\nMi sistema :\n\n";
print "Tu logname es : $usuario\n";
print "Directorio Actual : $locacion\n";
print "Kernel : $kernel\n";
print "Release : $release\n";
print "Fecha : $fecha\n";



Eso es todo :D

7 comentarios:

  1. Te falto hablar de system ^~^ por ejemplo para uname -r

    #!/usr/bin/perl

    use strict;
    use warnings;
    use utf8;

    my $usuario = `whoami`;
    my $locacion = `pwd`;
    my $kernel = `uname`;
    my @release = ("uname", "-r");
    my $fecha = `date`;

    print "\nMi sistema :\n\n";
    print "Tu logname es : $usuario\n";
    print "Directorio Actual : $locacion\n";
    print "Kernel : $kernel\n";
    print "Release : "; system(@release);
    print "Fecha : $fecha\n";

    O lo quieres dejar para otra entrada ^-^

    ResponderBorrar
    Respuestas
    1. Si no hable de system,lo que pasa es que quiero dejar su uso para otro tipo de tareas.

      Tal vez en otra entrada :D

      O hechatela tu ^_^,me vendría bien un poco de ayuda

      Borrar
    2. hechatela tu?

      Así me lo pides,tu si que sabes tratar a una mujer u//u

      Pero no me gusta blogger ,de hecho no me gusta bloggear ni nada que tenga que ver con redes sociales y tu lo sabes, mejor solo te corrijo tus errores ^o^

      O crea un sitio con rais o catalyst y ya veremos :)

      Borrar
    3. Con catalyst o rails O_O

      A lo mucho podre montar un CMS como joomla en un servidor XD y me pides que use un framework.

      Pero ta bien de todas formas es bueno verte por aquí :D

      Borrar
    4. ^-^

      Con system lo puedes hacer con menos lineas ^~^

      https://lh6.googleusercontent.com/-ucBUcsegYIA/ULvXtJXtPbI/AAAAAAAAAHg/N_XJ3sHhJ4w/s647/mas+rapido.png

      Borrar
  2. Si,con system no necesitamos definir variables y ahorramos lineas y texto,pero si requerimos los datos otra vez tendríamos que definir system otra vez o no?.

    Pero conociéndote me vas a decir que si lo metemos en una subrutina queda:

    #!/usr/bin/env perl

    print "Mi logname es: "; &nombre();

    sub nombre {
    system("whoami");
    }

    O no?

    ResponderBorrar
    Respuestas
    1. Una subrutina para cada system Damian....

      No es mala practica?

      Te mencione system porque el ejemplo que hiciste es muy pequeño,pero si es un código grande que usa funciones del sistema no me molesta definir variables con comillas invertidas ^~^

      Borrar

Los comentarios serán revisados antes de ser publicados.