En perl podemos hacer las cosas de muchas maneras y les voy a mostrar algunas funcionalidades que le podemos dar a open.
Primero que nada esta es la sintaxis que se usa:
open(filehandle, "Archivo" )
Que es filehandle???
Indicador exclusivo asignado a un fichero que permite dirigirse hacia él
Osea que le vamos a dar un indicador a nuestro archivo para poder usarlo en el script
Bien vamos a inicar con los ejemplos
Abran una terminal
Y escriban
echo "Esta es una prueba de perl hecha por tiempo de tux" >> tiemtux.txtEso que hicimos fue crear un archivo llamado tiemtux.txt y que contiene:
Esta es una prueba de perl hecha por tiempo de tuxAhora creamos un script en perl para abrir el archivo
vim abrir-prueba.plY escribimos
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
open (PRUEBA, "tiemtux.txt");
while (<PRUEBA>) {
chomp;
print "$_\n";
}
Lo explico:
#!/usr/bin/env perl
Es el hashbang o shebang
use strict; use warnings; use utf8;
Esto mas que nada es para realizar una buena programación, sin fallo alguno
open (PRUEBA, "tiemtux.txt");
open es el comando que abre el archivo
PRUEBA es el filehandle que le pasamos al archivo(debe ir con mayúscula)
tiemtux.txt es el archivo que vamos a abrir
while (<PRUEBA>) {
Es un bucle que leerá todo el archivo,de principio a fin
chomp;
Este comando limpia la lectura,parecido a chop
print "$_\n";
Imprime el valor del ciclo que a tomado,que es la ultima entrada,osea el archivo en si.
}
Todo lo que empieza tiene que acabar y este símbolo cierra el bucle a igual que lo abre el que esta en el bucle.
Y así se abren los archivos
Vamos a hacer algo mas interesante
Vamos a vitaminar el scirpt :D
Editamos nuestro script que quede así:
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
if ($ARGV[0]) {
open (PRUEBA, $ARGV[0]) || die "$!\n";
while (<PRUEBA>) {
chomp;
print "$_\n";
}
}
else {
print "\n[+] Sintax : $0 <archivo>\n";
}
Como les he dicho Unix funciona con distintos lenguajes de programacion y perl no es la diferencia
Por ejemplo alien,si alien el programa para manejo de paquetes es un script mutante en perl
Ver paqueteY no hay mucha sertesa de cuantos programas de unix usan perl para funcionar,por ejemplo el script que les deje arriba seria el equivalente de cat
Ya que se dice que cat,si cat el comando para concatenar en los sistemas tipo Unix usa este algoritmo
while(<>){print}Que lo use en el script de arriba,pues bien vamos a hacer un clon de cat
No se ciertamente si es un clon, porque si queremos ver cat esta ofuscado y nos sale algo como esto
Y tampoco he visto el código fuente,pero debe ser algo muy grande,el clon que vamos a realizar es solo para lo que se usa mas,que es para husmear en archivos de texto.
Bueno vamos a empezar
Primero necesitamos que nuestro script abrir-prueba.pl este así:
Pueden remplazar $0 por catp: así
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
if ($ARGV[0]) {
open (PRUEBA, $ARGV[0]) || die "$!\n";
while (<PRUEBA>) {
chomp;
print "$_\n";
}
}
else {
print "\n[+] Sintax : catp <archivo>\n";
}
Ahora lo copiamos a /usr/bin/
sudo cp abrir-prueba.pl /usr/bin/catpAhora le damos permisos de ejecución
sudo chmod +x /usr/bin/catpY listo ya tenemos catp(cat perl) en nuestro directorio de programas,ahora ejecuten:
Ahora si cualquier archivo de texto que quieran:
con la sintaxis
catp archivo_texto
Por ejemplo
Con cat:
Con catp:
Identico?
En este caso si,ya que como dije cat tiene una enorme potencia y
muchas otras funciones,pero si se dan cuenta también sirven los pipes:
Bueno eso es todo,si ya saben usar join,split,etc sabrán que se pueden hacer muchasssssss cosas con perl,pero si no es asi esperen próximos tutoriales.
A y me falto explicar el codigo:
#!/usr/bin/env perl
use strict; #
use warnings; # Buena programación
use utf8; #
if ($ARGV[0]) { # Verificamos si existe ARGV,(ya lo habíamos visto)
open (PRUEBA, $ARGV[0]) || die "$!\n"; # Abre el archivo,que sera # ARGV[0],y si no lo puede abrir ira a la función die
while (<PRUEBA>) { # Iniciamos bucle para que lo abra
chomp; # Limpiamos codigo
print "$_\n"; # Imprimimos el texto
}
} # Todas las llaves son para abrir y cerrar, así que llevan # compañero,analizar el código para saber cual es de cual
else {
print "\n[+] Sintax : catp <archivo>\n"; # Si no hay ARGV imprime # esto
}
No hay comentarios.:
Publicar un comentario
Los comentarios serán revisados antes de ser publicados.