Villum Sejersen wrote:
> den mest fornuftige måde at dissekere sådan en sag på uden at vælte
> pc-en? 22.000 linjer * typisk 80 tegn giver immervæk 2-3MB at holde styr
> på, plus det løse.
Bah, RAM er billigt, jeg har flere gange kværnet mange GB tekst gennem
perl uden problemer, jeg vil foreslå:
open INPUT, "<filen.csv" or die "screaming: $!";
my @input = map { chomp; [split /,/] } <INPUT>;
close INPUT;
Så har du et array af array-refs som du kan rode med, det kan godt være
pænere at bruge et array af hashrefs i stedet, men det kan man selv om.
> samt at kunne sortere
> dubletter fra, dvs. hvor felterne 4-8 er indholdsmæssigt helt ens.
For at sortere dupletter fra bruger du blot et hash:
my %seen;
my @unique = grep { !$seen{join ',', $_->[4,8]}++ } @input;
Så har du kun forekomster i @unique som er unikke i felt 4-8 (husk at
det første element i et array er nummer 0)
> Ønskesedlen går på, bagefter i det mindste at kunne sortere på felterne
> 8-4 (så resultatet kommer efter postdistrikt),
my @sorted = sort {
$a->[8] cmp $b->[8] ||
$a->[7] cmp $b->[7] ||
$a->[6] cmp $b->[6] ||
$a->[5] cmp $b->[5] ||
$a->[4] cmp $b->[4]
} @unique;
> Der skal også helst kunne checkes for manglende feltindhold samt for
> bestemte indhold ((del)strenge) i disse fem felter.
Prøv med eq, f.eks:
if($l->[0] eq '') {
die "ÅH, Gud, nej! stengen er tom!!!";
}
> men har svært ved at træffe fornuftige startvalg ud fra min
> selvfølgelig meget mindre testfil.
Prøv at skrive det simpelst mulige program der gør det du vil, i perl
betyder det typisk også det hurtigste og det der er lettest at
vedligeholde og se om ikke det kører hurtigt nok på den rigtige mængde data.
> Jeg vil blive meget glad for lidt inspirerende igangsætning. Helst
> forklarede kodeeksempler og/eller henvisninger til hvorfor hvilke valg
> er de rigtige i den givne sammenhæng.
Det håber jeg du har fået, jeg har nok brugt et par skumle perl tricks,
men her vil dine (iøvrigt gode) bøger hjælpe:)
--
Regards Flemming Frandsen -
http://dion.swamp.dk
PartyTicket.Net co founder & Yet Another Perl Hacker