Junio 20, 2018, 07:00:49 am

Autor Tema: [Perl] Coleccion y aportes de snippets  (Leído 1377 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado laz3r1c0m

  • Me das tu IP?
  • *
  • Mensajes: 22
  • Sexo: Masculino
  • Primero a lapiz y papel, luego a la terminal >>
    • Ver Perfil
[Perl] Coleccion y aportes de snippets
« en: Marzo 26, 2014, 06:26:52 am »
Hola a todos.

Quiero crear una colección de mini-trozos de códigos ( snippets ) en perl que puedan ser reutilizados o tomados como prototipo para ayudar en la construccion de vuestros codes, así que este post esta dedicado a esos trozos de code.

Recomiendo que el snippet se documente su función mediante lineas de comentarios dentro del propio código del programa  y añadir los pros y contras de usarlo, sin mas aqui mi sencillo aporte

Código: (perl) You are not allowed to view links. Register or Login
# Snippet perl para comprobar primero si las opciones introducidas estan en el rango
# valido de opciones usando operadores AND ( && )
#
# [Pros +]
#
# De esta forma puedes evitar no tener que recorrer todo un bucle de condicionales if para comprobar si
# la opcion introducida es valida por ejemplo :
#
#
# [Contras -]
#
# Es un poco liante el hecho de usar tantos paréntesis
#
# by |az3r1c0m

print q(
Snippet "OR options"

-----------------------
Seleccione una opcion :
-----------------------

1 >. TEST1
2 >. TEST2
3 >. TEST3
4 >. TEST4

[a] TEST-A
[b] TEST-B
[c] TEST-C
[d] TEST-D
);

$option=<STDIN>;
chomp ($option);

if ((((($option !=1)&&($option!=2))&&(($option!=3)&&($option!=4)))&&(($option ne"a")&&($option ne "b")))&&(($option ne "c")&&($option ne "d")))
{

print "Opcion $option no valida-->FIN DE EJEMPLO DE SNIPPET \n"
}else{
print "Opcion $option valida\n"
}

# El operador && del if toma los argumentos y los evalua y solo si todos los argumentos son verdaderos
# se ejecutan las instrucciones de dentro de las llaves del if{}
#y si tan solo uno es falso pasa la ejecucion al else{}

|az3r1c0m  ;)
« Última modificación: Marzo 28, 2014, 07:23:56 pm por laz3r1c0m »

Desconectado laz3r1c0m

  • Me das tu IP?
  • *
  • Mensajes: 22
  • Sexo: Masculino
  • Primero a lapiz y papel, luego a la terminal >>
    • Ver Perfil
Re:[Perl] Coleccion y aportes de snippets
« Respuesta #1 en: Marzo 28, 2014, 07:23:32 pm »
Hola

Esta es una nueva version mucho mas simplificada para evaluar si la opcion introducida por el usuario esta en la lista de opciones o no.
A diferencia de antes, la comprobacion con operadores AND (&&) es ilegible cuando llegan a ser  mas de tres o cuatro opciones asi que publico este snippet el cual es realmente muy simple y facil de usar.

Normalmente cuando creamos menus le pedimos al usuario que ingrese una opcion que puede ser un numero o una letra, valiendome de esta peculiaridad sale este snippèt

Código: (perl) You are not allowed to view links. Register or Login
#
# Snippet para comprobar si la opcion introducida es correcta
# Util si las opciones a elegir vienen dadas por un numero o una letra
#
# Para usar este snippet si las opciones vienen dadas por letras
# y numeros consecutivos, tan solo hay que cambiar la linea 23,
# y entre los corchetes establecer el rango desde donde comienzan las opciones
# hasta donde terminan, en mi caso mis opciones comienzan desde el numero
# 1 hasta el 4 entonces es rango (1-4) y las letras que tengo son
# desde "a" hasta "d" entonces rango (a-d) LAS MAYUSCULAS IMPORTAN
# Si escribiese rango (A-D) no funcionaria, para evitar esto debes escribir
# (A-Da-d)
#
#
# |az3r1c0m
#
#
$menu=<<MENU;

1> TEST-1 (a) TEST-A
2> TEST-2 (b) TEST-B
3> TEST-3 (c) TEST-C
4> TEST-4 (d) TEST-D

MENU

print "$menu";
print "\nIntroduce una opcion >>";
$option=<STDIN>;
chomp $option;
if($option=~/[^((1-4)(a-d))]/){
print "Opcion $option no existente";
}else{
print "Opcion $option correcta";
}


|az3r1c0m  ;)

Desconectado Root@NTC0394:~$

  • Spammer trucho
  • Yo vivo en CPH
  • ***
  • Mensajes: 491
  • Sexo: Masculino
  • El Precio del Poder
    • Ver Perfil
    • NTC0394.com.ar
Re:[Perl] Coleccion y aportes de snippets
« Respuesta #2 en: Marzo 28, 2014, 10:12:12 pm »
Estos Script están echos por vos? si no lo son pon la fuente.
You are not allowed to view links. Register or Login
A la Sandia calada dulce y colorada ♪
SELECT ALL FROM LaConchaDeTuMamá WHERE Visitantes='NTC0394';
[img width

Desconectado .xAk.

  • el engendro
  • Colaborador
  • ****
  • Mensajes: 7316
  • Sexo: Masculino
  • F0r3v3R NeWbI3
    • Ver Perfil
Re:[Perl] Coleccion y aportes de snippets
« Respuesta #3 en: Marzo 28, 2014, 10:17:58 pm »
Is the truth out there?

Desconectado laz3r1c0m

  • Me das tu IP?
  • *
  • Mensajes: 22
  • Sexo: Masculino
  • Primero a lapiz y papel, luego a la terminal >>
    • Ver Perfil
Re:[Perl] Coleccion y aportes de snippets
« Respuesta #4 en: Abril 10, 2014, 06:24:00 am »
Hola a todos   :D , aqui mi tercer snippet jugando con la selección de opciones !

Este snippet como los anteriores viene a ser para lo mismo, facilitar la comprobación de si la opción elegida por el usuario existe.

Usarlo es muy sencillo  ;)

Código: (perl) You are not allowed to view links. Register or Login

#
# Snippet opciones v3
#
# Siguiendo con mis snippets acerca de como comprobar
# si una opcion introducida por el usuario existe
# he creado esta version mas simple.
#
# Este metodo permite recojer todas las opciones disponibles en un hash
# y con el uso de exists (cae en deshuso en prox. versiones de perl) o defined
# comprobamos si la opcion introducida existe
#
#
#
# |az3r1c0m
#
$menu=<<MENU;

Snippet opciones v3

1> TEST-1 (a) TEST-A
2> TEST-2 (b) TEST-B
3> TEST-3 (c) TEST-C
4> TEST-4 (d) TEST-D

MENU

%opciones=qw(1 '' 2 '' 3 '' 4 '' a '' b '' c '' d ''); #En el hash %opciones, introducimos todas las        #opciones que el usuario tenga disponibles, y        #declaramos cada llave (opcion del usuario) con el        #valor ('')
# ATENCION !!! Se puede usar perfectamente
# la nomenclatura tipo key=>value, en el siguiente
# ejemplo hago uso de este :D

print $menu;

print "Introduce una opcion>> ";

$input=<STDIN>;
chomp $input;

if(defined $opciones{$input}){ #El truco es sencillo, definir en un hash las opciones que
#el usuario pueda introducir, estos serán las claves y como valor
#le damos ('')
print "Muy Bien ! La opcion $input existe \n";
}else{
print "Chico Malo, la opcion $input no existe \n";
}



Usando la nomenclatura clave=>valor para el hash %options quedaria asi el code

Código: (perl) You are not allowed to view links. Register or Login

$menu=<<MENU;

1> TEST-1 (a) TEST-A
2> TEST-2 (b) TEST-B
3> TEST-3 (c) TEST-C
4> TEST-4 (d) TEST-D

MENU

%opciones=(
1=>'',
2=>'',
3=>'',
4=>'',
a=>'',
b=>'',
c=>'',
d=>'',
);
print "$menu\nIntroduce una opcion >>";
chomp($input=<STDIN>);
if(exists $opciones{$input}){
print "Funcionando correctamente opcion $input :D\n";
}else{
print "Algo ha salido mal opcion $input no existe\n";
}


|az3r1c0m  ;)
« Última modificación: Abril 15, 2014, 12:56:24 pm por laz3r1c0m »

Desconectado laz3r1c0m

  • Me das tu IP?
  • *
  • Mensajes: 22
  • Sexo: Masculino
  • Primero a lapiz y papel, luego a la terminal >>
    • Ver Perfil
Re:[Perl] Coleccion y aportes de snippets
« Respuesta #5 en: Abril 15, 2014, 12:55:59 pm »
Saludos !  :D

En esta ocasión os traigo un snippet muy util para aquellos que trabajen con directorios en perl.

Suponiendo que todos conocemos la función
Código: (perl) You are not allowed to view links. Register or Login
chdir(DIRECTORY) la cual sirve para cambiar al directorio especificado por DIRECTORY. Esta función conlleva un riesgo, puesto que no admite el usarla de forma local, he aqui un ejemplo de esto :

Código: (per) You are not allowed to view links. Register or Login
#
#
use Cwd;

$dir1='/home/laz3r1c0m/';
$dir2='/var/tmp';

chdir ($dir); # nos movemos a mi carpeta persona a /home/laz3r1c0m/

sub test{
    chdir ($dir2); #nos movemos a /var/tmp
}

print getcwd;  # devuelve el valor /var/tmp que es el ultimo directorio al que nos movimos usando chdir en la funcion test()
                         # y durante todo el code perl este sera nuestro directorio de trabajo a menos de que no volvamos a movernos con chdir()


Quiza no queramos eso, quiza deseemos movernos a un directorio concreto y luego despues de terminar la ejecucion de nuestra funcion test() volver al directorio de trabajo que estabamos antes, esta funcionalidad ( que se conoce como localización ) chdir no la permite debido a un bug en perl.

Para esto usamos el modulo
Código: You are not allowed to view links. Register or Login
use File::chdir; , en distros Debian y RedHat el paquete se llama perl-File-chdir.

Veamos la diferencia usando File::chdir frente a chdir() -- >

Código: (perl) You are not allowed to view links. Register or Login
#
#
use Cwd;
use File::chdir;

$dir1='/home/laz3r1c0m/';
$dir2='/var/tmp/';

$CWD=$dir1; # $CWD es una variable especial, esto es lo mismo que hacer chdir($dir1), ahora nuestro directorio de trabajo actual es /home/laz3r1c0m

sub test{
    local $CWD=$dir2; # nos movemos a /var/tmp/ , el directorio de trabajo mientras se ejecuta la funcion test() ahora es /var/tmp/
                                        #recordar declarar a $CWD como local
}

print getcwd; # el directorio de trabajo despues de salir de la funcion test() sigue siendo el que especificamos al principio, /home/laz3r1c0m



La variable
Código: (perl) You are not allowed to view links. Register or Login
$CWD esta reservada cuando usamos
Código: (perl) You are not allowed to view links. Register or Login
File::chdir al igual que la variable @CWD, de esta forma y con este módulo podemos conseguir la localización que con chdir () no podíamos

[ + ] Módulo File::chdir You are not allowed to view links. Register or Login


|az3r1c0m  ;)
« Última modificación: Abril 15, 2014, 01:10:15 pm por laz3r1c0m »


xx
[F.A.Q.] Colección de aportes al foro C / C++ (25/02/2010)

Iniciado por .xAk.

0 Respuestas
22955 Vistas
Último mensaje Noviembre 20, 2009, 10:46:58 am
por .xAk.
exclamation
Facil acceso a Exploit-DB desde Perl y Shodan API [PERL]

Iniciado por alxr_n3td1srupt

2 Respuestas
1858 Vistas
Último mensaje Enero 31, 2013, 08:41:16 am
por alxr_n3td1srupt
exclamation
[Perl] Creacion de un Joiner en Perl

Iniciado por BigBear

2 Respuestas
1364 Vistas
Último mensaje Marzo 15, 2013, 01:56:34 pm
por BigBear
question
Puerto para hacer Bind port to /bin/sh [perl] y Back-connect[perl] para NC

Iniciado por Zpukx

1 Respuestas
904 Vistas
Último mensaje Febrero 12, 2015, 02:35:36 am
por seth
resuelto
[Objective-C] Ejemplos y aportes

Iniciado por MoisesE

0 Respuestas
2854 Vistas
Último mensaje Mayo 24, 2010, 10:56:06 am
por MoisesE
exclamation
Guia de Codes/Aportes interesantes

Iniciado por Sthefano02

0 Respuestas
1875 Vistas
Último mensaje Julio 03, 2010, 09:08:01 pm
por Sthefano02
exclamation
F.A.Q De Seguridad [Aportes & Temas Interesantes]

Iniciado por TokioDrift

22 Respuestas
40038 Vistas
Último mensaje Diciembre 02, 2010, 10:26:55 pm
por abdulwaheed
xx
Aportes y Pedidos de MP4 para celulares y Ipods

Iniciado por ..::Lëssiëm Táralóm::..

4 Respuestas
2319 Vistas
Último mensaje Agosto 05, 2007, 01:07:16 pm
por ..::Lëssiëm Táralóm::..
xx
Experiencia propia con RTL8187L, favor brindar aportes.

Iniciado por leodrak

1 Respuestas
2725 Vistas
Último mensaje Agosto 19, 2010, 07:45:00 am
por leodrak
resuelto
[Consejos WebMaster + Aportes Interesantes + FTP Download + Top 10 Hosting]

Iniciado por shevchenko

1 Respuestas
12192 Vistas
Último mensaje Mayo 22, 2013, 08:53:37 am
por M4inFox