Perl och många andra programmeringsspråk använder arrayer för att lagra en lista med uppgifter . Däremot stöder Perl också en särskild datastruktur kallas hash . Ett Perl hash associerar ett visst värde med en nyckel . Ett exempel är hash { Jan => 31 , april => 30 } , i vilken en månad är en nyckel och ett antal dagar är ett värde . En Perl hash gör det möjligt att utveckla en enkel algoritm för att ta bort dubbletter från en array . Motsvarande subrutin har mindre än tio kommandon i Perl . Instruktioner
Skapa en subrutin " Remove_duplicates , " en algoritm
1
Skaffa array data och förklarar en hash "poster . " En annan grupp som kallas " new_array " kommer att innehålla icke- duplicerade data. Steg 1 till 5 illustreras med Perlkod anges i avsnitt 2 , steg 3 . Tilldela alla array-element som hash nycklar
2
och tilldela hash värden lika med 1 för alla nycklar .
3
loopa igenom alla element i arrayen och kontrollera hash värdet associerat med detta element .
4 p Om den hash värdet är 1 ( se steg 3 ) då elementet är original eller inte dupliceras och bör läggas till " new_array . " På samma gång detta element är märkt , dvs hash-värde ändras till 0
5 p Om hash värdet är 0 , då detta element redan har stött på , . Dvs dupliceras och hoppas < . br >
exempel och Perl Program
6
bort dubbletter från arrayen med elementen ( 1 2 6 7 2 9 1 2 6 ) .
7
Skriv inledande och avslutande kedjor ( utan dubbletter )
8
# avsnitt 1 # Subrutin börjar
sub remove_duplicates { my ( $ array , $ new_array ) = @ _ , . # Steg ett . Läs initiala inmatningar arraymy % = (); # Steg 1 . Deklarera hash
foreach ( @ $ array ) { nästa om det finns $ poster { $ _ } , $ poster { $ _ } = 1 ; # Steg 2 }
foreach ( @ $ array ) { # Steg 3 . Loopa igenom alla array elementsif ( $ poster { $ _ } ) { # Steg 5 . Elementet hoppas över om hash värdet är 0.push @ $ new_array , $ _ ; # Steg 4 . Lägg till ett element i den nya arrayen endast om hash värdet är 1 $ poster { $ _ } = 0 ; # Steg 4 . Elementet är märkt dvs ändra hash värdet till 0 . } }
}
# Subrutin Slutar
# Avsnitt 2my $ array = [ QW ( 1 2 6 7 2 9 1 2 6 ) ] ; # Steg 1 : ett exempel arraymy $ new_array = []; # remove_duplicates ( $ array , $ new_array ) , print " @ $ array \\ n"; # Steg 2 . Skriva initial arrayprint " @ $ new_array \\ n"; # tryckning slutliga arrayexit ,