/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Struktur sammenligning?
Fra : Morten Guldager


Dato : 04-04-04 21:39

Hejsa,

Jeg har behov for en metode til at finde ud af om 2 "spændende"
datastrukturer er identiske.

Men spændende mener jeg at de er uforudsigelige. En blanding
af hashes og arrays hægtet sammen på en eller anden ny måde hver gang.

F.eks.
my %A =
(
navne => ['Morten', 'Guldager', 'Jensen'],
fisk => 8
);

my %B =
(
fisk => 8,
navne => ['Morten', 'Guldager', 'Jensen']
);

Algoritmen skulle gerne opdage at de 2 er ens.

Jeg tænkte på noget med at bruge Data::Dumper og hælde output ind
i en MD5 tingest og så sammenligne de resulterende hashes.

Men det ligner mest af alt en høker løsning.

Har I nogle simple forslag? Det skal udføres ret ofte, så optimerede
stunts er velkomne.


/Morten

 
 
Andreas Plesner Jaco~ (04-04-2004)
Kommentar
Fra : Andreas Plesner Jaco~


Dato : 04-04-04 21:41

On 2004-04-04, Morten Guldager <spamtrap@mogul.dk> wrote:
>
> Jeg har behov for en metode til at finde ud af om 2 "spændende"
> datastrukturer er identiske.

Data::Compare?

--
Andreas Plesner Jacobsen | The mosquito exists to keep the mighty humble.

Morten Guldager (04-04-2004)
Kommentar
Fra : Morten Guldager


Dato : 04-04-04 21:49

Sun, 04 Apr 2004 at 20:41 GMT Andreas Plesner Jacobsen wrote
> On 2004-04-04, Morten Guldager <spamtrap@mogul.dk> wrote:
>>
>> Jeg har behov for en metode til at finde ud af om 2 "spændende"
>> datastrukturer er identiske.
>
> Data::Compare?

Tjo, den ser godt nok meget lovende ud. Jeg prøver.


/Morten

Kim Hansen (04-04-2004)
Kommentar
Fra : Kim Hansen


Dato : 04-04-04 22:33

Morten Guldager <spamtrap@mogul.dk> writes:

> Hejsa,
>
> Jeg har behov for en metode til at finde ud af om 2 "spændende"
> datastrukturer er identiske.

eq_hash fra Test::More kan også bruges

Jeg lavede lige en test for at se om den kunne bruges på hashen med
arrays i, det ser ud til at virke fint:

==================================================================
kim@grov$ cat x.pl
#!/usr/bin/perl

use Test::More;

my %A =
(
navne => ['Morten', 'Guldager', 'Jensen'],
fisk => 8
);

my %B =
(
fisk => 8,
navne => ['Morten', 'Guldager', 'Jensen']
);

my %C =
(
fisk => 8,
navne => ['Guldager', 'Morten', 'Jensen']
);

print 'A=B ', eq_hash( \%A, \%B ), "\n";
print 'A=C ', eq_hash( \%A, \%C ), "\n";
print 'B=C ', eq_hash( \%B, \%C ), "\n";

kim@grov$ ./x.pl
A=B 1
A=C 0
B=C 0
kim@grov$
==================================================================

--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Dalslandsgade 8, A708 | /,`.-´` -. ;:-. | Jeopardy.
2300 København S | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Tlf: 32 88 60 86 | '---''(_/--' `-'\_) | spørgsmålet.

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste