SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] rette alle forekoster i en fil med noget fra anden fil



sslug@sslug (Dennis Jørgensen) writes:

> $linje[14] = $forhandler{$linje[14]} || $linje[14];

Rigtigt. Kim skal jo ikke have det for let, vel?


Jeg har nu rent faktisk afprøvet følgende mod Kims testdata:

$ perl -naF';' -e '$,=";";if(1..eof){$F{eval$F[0]}=$F[1]}else{$F[14]=$F{$F[14]}||$F[14];sslug@sslug' forhandlerliste.csv varerliste.csv

Hvilket bliver mere læsligt efter en tur gennem O=Deparse:

xyzzy% perl -MO=Deparse -naF';' -e '$,=";";if(1..eof){$F{eval$F[0]}=$F[1]}else{$F[14]=$F{$F[14]}||$F[14];sslug@sslug'         
LINE: while (defined($_ = <ARGV>)) {
    @F = split(/;/, $_, 0);
    $, = ';';
    if (1 .. eof) {
        $F{eval $F[0]} = $F[1];
    }
    else {
        $F[14] = $F{$F[14]} || $F[14];
        print @F;
    }
}
-e syntax OK
xyzzy% 

Så er der kun hacket med at læse begge filer gennem i samme løkke der
er spøjs. (Ok, eval er stadig et hack.)

-- 
 Peter Makholm     |              I have no caps-lock but I must scream...
 sslug@sslug |                                               -- Greg
 http://hacking.dk |                                                      


 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:54
Denne side vedligeholdes af MHonArc .