Perl og mange andre programmeringsspråk bruke arrays for å lagre en liste over data . Men støtter Perl også en bestemt data struktur som kalles en hash . En Perl hash knytter en bestemt verdi med en nøkkel . Et eksempel er hash { Jan = > 31 , apr = > 30 } , der en måned er en nøkkel og et antall dager er en verdi. En Perl hash gjør det mulig å utvikle en enkel algoritme for å fjerne duplikater fra en matrise. Den tilsvarende subrutine har mindre enn ti kommandoer i Perl. Instruksjoner
Opprette en Subrutine " Remove_duplicates ; " en algoritme
en
Skaff rekke data og erklære en hash "-oppføringene . " En annen matrise kalt " new_array " vil inneholde ikke- dupliserte data . Trinn 1 til 5 er illustrert med Perl koden som er gitt i kapittel 2 , trinn 3 .
2
Angi alle array elementer som hash keys og tildele hash verdier lik 1 for alle tastene .
3
Loop gjennom alle elementene i matrisen og sjekke hash verdi knyttet til dette elementet .
4 p Hvis hash-verdi er 1 ( se steg 3) og deretter element er original eller ikke dupliseres og bør legges til " new_array . " På samme tid dette elementet er merket , dvs. hash verdien endres til 0
5 p Hvis hash-verdi er 0 , så denne delen er allerede møtt; . Dvs. det er duplisert og hoppet < . br >
Eksempel og Perl Program
6
Fjern duplikater fra tabellen med elementer ( 1 2 6 7 2 9 1 2 6 ) .
7
Skriv ut første og siste arrays (uten duplikater )
8
# § 1 # Subrutine Begins
sub remove_duplicates { min ( $ array, $ new_array ) = @ _ ; . # Trinn en . Les innledende arraymy % oppføringer = () ; # Trinn 1 . Erklærer hash
foreach ( @ $ array) { neste hvis det finnes $ oppføringer { $ _ } , $ oppføringer { $ _ } = 1; # Trinn 2 }
foreach ( @ $ matrise ) { # Trinn 3 . Loop gjennom alle utvalg elementsif ( $ oppføringer { $ _ } ) {# Trinn 5 . Elementet er hoppet Hvis hash-verdi er 0.push @ $ new_array , $ _ ; # Trinn 4 . Legge til et element i det nye utvalget kun hvis hash-verdi er en $ oppføringer { $ _ } = 0 ; # Trinn 4 . Elementet er merket dvs. endre hash verdien til 0 . }
} }
# Subrutine Slutter
# Seksjon 2MY $ matrise = [ qw ( 1 2 6 7 2 9 1 2 6 ) ]; # Trinn 1: et eksempel arraymy $ new_array = [ ]; # remove_duplicates ( $ array, $ new_array ) , print " @ $ matrise \\ n"; # Trinn 2 . Skrive innledende arrayprint " @ $ new_array \\ n"; # utskrift endelige arrayexit ;