Perl y muchos otros lenguajes de programación utilizan arrays para almacenar una lista de datos . Sin embargo , Perl también es compatible con una estructura de datos específica llamada hash. A Perl asocia un determinado valor de hash con una clave . Un ejemplo es el hash { ene = > 31 , Mayo = > 30 } , en el que un mes es una clave y un número de días es un valor . Un hash de Perl hace posible el desarrollo de un algoritmo simple para eliminar duplicados de una matriz. La subrutina correspondiente tiene menos de diez comandos en Perl. Instrucciones
Creación de un subprograma " Remove_duplicates , " un algoritmo
1
obtener datos de la matriz y declarar un hash "entradas ". Otra matriz llamada " new_array " contendrá los datos no duplicados . Los pasos 1-5 se ilustran con el código Perl en la Sección 2 , Paso 3 .
2
Asignar todos los elementos de la matriz como las claves hash y asignar valores hash igual a 1 para todas las teclas .
3
bucle a través de todos los elementos de la matriz y comprobar el valor hash asociado a este elemento .
4
Si el valor hash es 1 ( ver paso 3 ), el elemento es original o no duplicado y debe añadirse a " new_array . " En el mismo tiempo, este elemento está marcado , es decir, los cambios en el valor de hash a 0
5
Si el valor hash es 0 , entonces este elemento ha sido ya encontrado ; . Es decir, se duplica y se omitirá < . br>
Ejemplo y Perl Programa
6
Eliminar duplicados de la matriz con los elementos ( 1 2 6 7 2 9 1 2 6 ) .
7
Imprimir las matrices iniciales y finales ( sin duplicados )
8
# Sección 1 # subrutina comienza
sub remove_duplicates { my ($ array , $ new_array ) = @ _ ; . Paso # 1 . Leer % entradas arraymy iniciales = () ; # Paso 1 . Declarar el hash
foreach (@ $ array ) { a continuación si existe las entradas de $ $ _ { } $ ; entradas { $ _} = 1 , # Paso 2 }
foreach ( $ array @ ) {# Paso 3 . Recorrer toda la gama elementsif ( entradas de $ $ _ { }) { # Paso 5 . El elemento se omite si el valor hash es 0.push @ $ new_array , $ _ ; # Paso 4 . Agregar un elemento a la nueva matriz sólo si el valor hash es $ 1 entradas {$ _} = 0 , # Paso 4 . El elemento está marcado , es decir cambiar el valor hash a 0. } } }
# Subrutina Ends
# Sección 2MY $ array = [ qw ( 1 2 6 7 2 9 1 2 6 ) ] ; # Paso 1 : un ejemplo arraymy $ new_array = [ ] ; # remove_duplicates ( $ array , $ new_array ) ; print " @ $ array \\ n" # Paso 2 . Impresión arrayprint inicial " @ $ new_array \\ n"; # imprimir arrayexit final;