DrDoogie Skrevet 21. november 2003 Del Skrevet 21. november 2003 (endret) Har da en kodesnutt som jeg er litt vel lei av nu. Og siden det er så lite liv her, får jeg vel poste som en "postcount whore in heat", for å dra litt liv igang. *grin* Her er da kodesnutten: . . . foreach my $key (sort keys %albumPatterns) { $_ = $entries{$line}[0]->{album}; if (eval "s/$key/$albumPatterns{$key}/") { #print "OLD: '", $entries{$line}[0]->{album}, "'\n"; $entries{$line}[0]->{changedalbum} = $_; $entries{$line}[0]->{patternmatched} = $key . "\t" . $albumPatterns{$key}; $albumPatterns{$key}[0]->{count} += 1; #print "NEW: '", $entries{$line}[0]->{changedalbum}, "'\n"; } } #print $entries{$line}[0]->{artist}, "\t", $entries{$line}[0]->{album}, "\n"; } } sub print_out { my %matches; foreach my $key (sort keys %entries) { @{$temp{$key}}; my $rec = { artist => $entries{$key}[0]->{artist}, album => $entries{$key}[0]->{album}, changedartist => $entries{$key}[0]->{changedartist}, changedalbum => $entries{$key}[0]->{changedalbum} }; push @{$matches{$entries{$key}[0]->{patternmatched}}}, $rec; #print "Key: ", $key, " artist: ", $entries{$key}[0]->{artist}, "\n"; } foreach my $key (sort keys %matches) { print scalar @{$matches{$key}}, "\n"; #print "Test array: ", $matches{$key}[3]->{album}, "\n"; foreach my $element (scalar @{$matches{$key}} - 1) { print "Original entry: '", $matches{$key}[$element]->{album}, "'\nPattern matched: '", $key, "'\nChanged entry: '", $matches{$key}[$element]->{changedalbum}, "'\n"; } } } Problemet her er at jeg ser ut til å ha mistet oversikten over ting og tang. Uansett, linja "print scalar @{$matches{$key}}, "\n";" gir meg som svar at jeg har 10 matcher i tekstfila som jeg matcher med mønstrene (koden er vel ellers klar), men "print "Original entry: '", ..." gir meg kun ett resultat, altså kun tre linjer. Linja: print "Test array: ", $matches{$key}[3]->{album}, "\n"; gir jo fint resultatet som ligger i posisjon 3. So how come and what gives? My brain hurts! Endret 21. november 2003 av DrDoogie Lenke til kommentar
Torbjørn Skrevet 21. november 2003 Del Skrevet 21. november 2003 eehh.... hårete greier gidder du skrive opp punktvis hva du har tilgjengelig av data og hva du ønsker at programmet skal gjøre? Lenke til kommentar
DrDoogie Skrevet 21. november 2003 Forfatter Del Skrevet 21. november 2003 (endret) My bad. Skrev: "foreach my $element (scalar @{$matches{$key}} - 1) {" i programmet, som egentlig skulle ha vært "foreach my $element (1..scalar @{$matches{$key}} - 1) {". Meesa is a soa stoopida. Men kluet i programmet går ut på å lese en samling regex'er, og matche disse med STDIN. Work in progress, move along folks. EDIT: Hva er et "sikkerhestløfte", forresten? Endret 21. november 2003 av DrDoogie Lenke til kommentar
tvangsgreie Skrevet 22. november 2003 Del Skrevet 22. november 2003 Det blir litt renere om du i stedet for foreach my $element (scalar @{$matches{$key}} - 1) { print "Original entry: '", $matches{$key}[$element]->{album}, skriver foreach my $element (@{$matches{$key}}) { print "Original entry: '", $element->{album}, Om du bruker (1..$x) vil du forøvrig ikke få med element 0. Om det er meningen blir min kode feil... Lenke til kommentar
Torbjørn Skrevet 22. november 2003 Del Skrevet 22. november 2003 perldoc perlref for de som vil lære mer om referanser og ikke skjønner bæret av hva som skjer her Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå