Codering van verbindingen in Perl (3 / 6 stap)

Stap 3: Bouw van de module


Dus laten we zien wat we geleerd hebben in het simpele model en combineer het met de lijst van de methoden voor het maken van een herbruikbare module. Het pairwise.pm bestand als bijlage bevat de uitvoerbare code.

De structuur van een module is als volgt:

 cat PACKAGENAME.pm #!/usr/bin/perl use strict;<br>package PACKAGENAME; <all that module code> 1; # optionally # documentation # commented out test cases 

Laten we vlees uit de methoden van de module beschreven in stap 1.

#initialization & lid methoden

 sub new { my $self = {}; $self->{'map'} = {}; #empty hash $self->{'sort'} = 'dnc'; #sort order $self->{'sep'} = ','; #separator character default comma $self->{'debug'} = ''; #debug tokens bless($self); return $self; } 
 sub debug { my ( $self, $val ) = $self->{'debug'} = $val if defined($val); return $self->{'debug'}; } 
 sub reset { my ( $self, $val ) = $self->{'map'} = {}; return ; } 
 #Helper method to override separator for map2str sub separator { my ( $self, $val ) = $self->{'sep'} = $val if defined($val); return $self->{'sep'}; } 

# Print methoden

 sub map2str { my ($self ) = my $str = ''; my $hashref = $self->{'map'}; foreach my $key (keys(%$hashref)){ #print "key=$key\n"; foreach my $val (keys(%{$hashref->{$key}})){ # line format= key,cnt,val\n $str .= $key; $str .= $self->{'sep'}; $str .= $self->{map}->{$key}->{$val}; $str .= $self->{'sep'}; $str .= $val; $str .= "\n"; } } if ($self->{'debug'} =~ m/map2str/) { $str .= "DEBUG" . "\n"; $str .= Dumper $self->{'map'}; } return $str; } 

# Vereniging manipulatie methoden

 #Add Key Value Pair sub addkvp { my ($self , $key , $val) = my $res = '1'; if ( defined($val) && defined($key)) { $self->{'map'}->{$key}->{$val} ++ ; } else { $self->{'map'}->{$key}->{$val} = '1'; $res = '0'; } return $res; } 
 #assert the whole map if you already have itsub assertkvps { my ($self , $map) = my $res = '1'; if ( defined($map) ) { $self->{'map'} = $map ; } else { $res = '0'; } return $res; } 
 #Remove Key Value Pair sub removekey { my ($self, $key ) = my $is_reg = 0 ; if (exists $self->{map}->{$key}) { $is_reg = 1 ; delete $self->{map}->{$key}; } return $is_reg; } 
 #Invert Key Value Pair<br>sub invertkvp { my ($self) = my $hashref = $self->{map}; my $revhash = {}; foreach my $key (keys(%$hashref)){ foreach my $val (keys(%{$hashref->{$key}})){ $revhash->{$val}->{$key} = $hashref->{$key}->{$val}; } } $self->{map} = $revhash; return; } 

#Association evaluatiemethoden:

 # Does Key exist returns 0/2 Boolean based on key's existance sub is_registered { my ($self, $key ) = my $is_reg = 0 ; if (exists $self->{map}->{$key}) { $is_reg = 1 ; } return $is_reg; } 
 # List All Keys returns arrayref sub getkeys { my ($self, $key ) = #my my = keys(%{ $self->{map} }); return \ } 
 # get key value returns arrayref sub getvalue { my ($self, $key ) = my if (exists $self->{'map'}->{$key}) { = keys(%{ $self->{'map'}->{$key} }); } else { print "no\n";} return \ } <br> 
 #get the map back as a hash sub gethash { my ($self) = my $reg = $self->{map}; return $reg; } 
 #non-uniq Key Value Pair returns hashref of keys with more then 1 value sub nonuniqkvp { my ($self) = my $hashref = $self->{map}; my $nonuniq = {}; foreach my $key (keys(%$hashref)){ foreach my $val (keys(%{$hashref->{$key}})){ if ($hashref->{$key}->{$val} gt 1) { $nonuniq->{$key}->{$val} = $hashref->{$key}->{$val}; } } } return $nonuniq; } 
 #non-uniq Key Value Pair returns a hashref of kvp with link count greater then 1 sub nonuniqkeys { my ($self) = my $hashref = $self->{map}; my $nonuniq = {}; foreach my $key (keys(%$hashref)){ if (scalar(keys(%{$hashref->{$key}}) gt '1')) { $nonuniq->{$key} = $hashref->{$key}; } } return $nonuniq; } 

Vergeet niet te sluiten uit het pakket met "1;"

 1; 

Volgende laten we oefenen het pakket met testcase voorbeelden.

Gerelateerde Artikelen

Codering van een kubus

Codering van een kubus

Terug te keren naar de vorige les: OverzichtLes overzicht:In deze les leert u hoe maak je de code voor een eenvoudige kubus-vorm.Bekijk het hele project van de "Tinkercoding een huis met Shape Generators" op TinkercadStap 1: Application Programm
Geautomatiseerde verlichting met behulp van DMX en Perl

Geautomatiseerde verlichting met behulp van DMX en Perl

waarom automatiseren uw verlichting?Nou, om eerlijk te zijn, de meeste van mijn huis is geautomatiseerd zo leek het duidelijk om te doen.Er zijn tal van voordelen in het automatiseren van onderdelen van uw huis, verlichting in het bijzonder gewoon ma
Codering van het huis

Codering van het huis

Terug te keren naar de vorige les: Maken van de muren van het huisLes overzicht:In deze les leert u hoe te combineren meerdere vormen om de vorm van een gebogen deur te maken.Bekijk het hele project op TinkercadStap 1: Maak een kleiner blok op hol ui
Batch-codering van tutorial ik

Batch-codering van tutorial ik

Batch-codering is een zeer fundamentele programmeertaal die zou moeten op elke windows-computer werken (niet apple al) vandaag ik zal u tonen de basisprincipes van de programmeertaal.Stap 1: Om te beginnen Open het start menu en Typ Kladblok open Kla
Codering van een externe IO Brainboxes apparaat te tellen

Codering van een externe IO Brainboxes apparaat te tellen

Deze gids zal worden met behulp van Visual Studio in visual C#. Het zal worden codering voor 2 ED lijningangen die "per item" en "dagelijkse prestatiemeteritem heten". U een naam kunt geven wat je wilt, deze regels zijn niet verbonden
Codering van webbrowser voor Windows 10 IOT op Raspberry PI 2

Codering van webbrowser voor Windows 10 IOT op Raspberry PI 2

Als per de de video-tutorial u zou nood voor downloaden van Visual Studio 2015 Gemeenschaphttps://dev.Windows.com/en-us/downloadsStap 1: Laat kijken naar de codeDe code voor dit voorbeeld is vrij eenvoudig:Een besturingselement ingesloten webviewText
Pixelart Tutorial met Charms van Hama of Perler kralen

Pixelart Tutorial met Charms van Hama of Perler kralen

Vele mogelijkheden met deze kleine jongens! Veel plezier!
De basisprincipes van HTML en CSS codering

De basisprincipes van HTML en CSS codering

Heb je ooit wilde maken van uw eigen website, maar die andere webbuilders zijn te duur? Zoek niet verder voor een intro naar HTML en CSS programmeren en coderen.Stap 1: Instellen Elke HTML en CSS codering van de pagina begint met deze blanco vel, gen
Combinatiehangslot met behulp van Intel Edison

Combinatiehangslot met behulp van Intel Edison

Hallo, ben ik zeker dat u kan een van deze combinatieslot weergegeven in de afbeelding hebt gebruikt. Ook wil u graag een elektronisch slot die net als deze werkt? Zo ja, dan dit is instructable voor jou. Dit kan worden gebruikt om te beveiligen uw e
Het gebruik van een LED-Array Module

Het gebruik van een LED-Array Module

met een enkele LED kun je de staat van iets: in- of uitschakelen. Dat zou een beetje saai. Met een array van LEDs kunt u tekens of zelfs sommige eenvoudige hoekig afbeeldingen weergeven. Dat zou een beetje pizzaz toevoegen aan een kleine microcontrol
Transformatie van oude printer aan geautomatiseerde stempelmachine

Transformatie van oude printer aan geautomatiseerde stempelmachine

Dit is de beste transformatie die ik ooit had gedaan, vond ik een oude printer die werkloos in mijn berging is en ik dacht bij het maken van sommige transformatie met het en jongens kijken het is voor je ik ben blij om dit met u delen kerels :-)Progr
Wekker met behulp van Atmega-328 en RTC

Wekker met behulp van Atmega-328 en RTC

Hi iedereen! Dit is mijn eerste instructable! Na het lezen van honderden instructables, besloten heb ik om mezelf.Klok is een van de meest essentiële dingen van huis houden. Er zijn verschillende soorten klokken zoals goede oude klokken van de slinge
DIY Laptop Cooling systeem van schroot

DIY Laptop Cooling systeem van schroot

Welkom iedereen. Dit instructable is op het maken van DIY Laptop koelsysteem van gemakkelijk beschikbare materialen en kladjes. Hoewel laptop koelsystemen niet zijn zeer duur of moeilijk te vinden. Maar een ander plezier in het maken van je eigen hee
Hoe te repareren van een lichtnetadapter

Hoe te repareren van een lichtnetadapter

dus zo veel als ik genieten van Asus, ben ik momenteel ongelooflijk geïrriteerd met de lichtnetadapter die kwam met mijn huidige eeepc. De voorplaat van de adapter is altijd een beetje dun, en gisteren toen ik haalde de adapter uit het stopcontact, d