domingo, 21 de julio de 2013

Perl: Comparativa con Powershell

Powershell es la respuesta (bastante tardada) de Microsoft al shell de Unix/Linux debido a las limitantes del batch MS-DOS.

Tanto Perl como Powershell permiten automatizar tareas, por ejemplo, mediante un script podemos ejecutar un proceso del sistema operativo, buscar un archivo en directorios, encender/apagar el sistema, entre otras cosas más.

Para hacer uso de Powershell debemos tener instalado el .Net framework http://www.microsoft.com/es-mx/download/details.aspx?id=17851 

Abrir la terminal de comandos y teclear: powershell  o bien abrirlo directamente--> Ejecutar: powershell
En Powershell los archivos tienen la extensión *.ps1, en Perl *.pl
1. Hola mundo
hola.ps1
# esto es un comentario
"Hola, mundo desde powershell !!"
#también se puede hacer esto
Write-Host  "Hola, mundo desde powershell !!"

hola.pl
#esto es un comentario
print "Hola, mundo desde Perl !!\n";

2. Paso de parámetros desde terminal
argumentos.ps1
#la declaración de variables es muy parecida a Perl
$args
"no. de parametros: $($args.count)"

argumentos.pl
use strict;
use warnings;

my $tam=scalar(@ARGV);
print "no. de parametros: $tam\n";

3. Uso de for
for.ps1
$args
"no. de parametros: $($args.count)"
foreach($arg in $args){
write-host "$1"
}

for.pl
use strict;
use warnings;

my $tam=scalar(@ARGV);
print "no. de parametros: $tam\n";

for(@ARGV){
  print "$_\n";
}

4. Introducir datos
entrada.ps1
$nombre= Read-Host "Introduce tu nombre: "
Write-Host "Hola $nombre"

entrada.pl
print "Tu nombre: ";
chomp(my $nombre=<STDIN>);
print "Hola $nombre\n";

5. Una simple función
funcion.ps1
function mensaje{
  "soy un simple mensaje"
}
#invocar
mensaje()

funcion.pl
sub mensaje{
  print "soy otro simple mensaje\n";
}
#invocar
mensaje();

6. Uso de if
if.ps1
$valor=18
$edad=read-host "Tu edad es "
if($edad -ge $valor){
write-host "correcto, puedes votar"
}else{
write-host "incorrecto,  no puedes votar todavia"
}

if.pl
my $valor=18;
print "Tu edad: ";
chomp(my $edad=<STDIN>);
if($edad ge $valor){
  print "correcto, puedes votar\n";
}else{
  print "incorrecto, no puedes votar todavia\n";
}

7. Conocer la ubicación del directorio donde se encuentra el script
ubicacion.ps1
<#
esto
es un comentario
multilínea en PS
#>
$ubicacion=gl
write-host $ubicacion

ubicacion.pl
=comment
este es
un comentario
multilínea en Perl
=cut
my $dir=`cd`;
print $dir;


La desventaja principal que tiene Powershell es que solo funciona en entornos Windows.





No hay comentarios:

Publicar un comentario