Avatar billede jes_petersen Nybegynder
04. november 1999 - 13:19 Der er 3 kommentarer og
1 løsning

Linjer i Perl 3

Okay, jeg har et problem, og jeg har ikke fået svar nok i de 2 sidste spørgsmål, så her kommer det helt konkrete spørgsmål:

Jeg har en database som en .txt-fil med 6 felter, eks.:

felt 1 | felt 2 | felt 3 osv.

|'erne splitter felterne.

Jeg har brug for først at indlæse hver linje i et array, derefter splitte felterne mellem |'erne, og til sidst skrive hvert felt i en af linjer ud.
Avatar billede mukke Nybegynder
04. november 1999 - 13:43 #1
For at indlæse filen kan du bruge:

open (FILE, "<$Filnavn");  ## åbner filen
@Linier = <FILE>;  # Hvis dette ikke virker, brug: while (<FILE>) {push @Linier, $_}
close (FILE);

herefter skal det hele splittes:

for $Linie (@Linier)
{
  @Felter = split/|/,$Linie;
  ### Hvad skal der så ske med dem???  $Felter[0], $Felter[1] ... indeholder nu felterne
  push @LinieriFelter, (@Felter)    ## Ikke sikker på det virker, men hvis det virker, så kan du senere bruge $LinieriFelter[$Linie][$Felt]
}

mht. udskrivning.. hvad er det helt præis du mener?
Avatar billede michaelras Nybegynder
04. november 1999 - 13:57 #2
open (FILE, "<datafil.txt") or die "Kunne ikke finde filen: $!";
@Linier = <FILE>;
foreach $IndexT (0 .. $#Linier-1)
{
        $tmp = $Linier[$IndexT];
        @$tmp = split(/\|/,$Linier[$IndexT]);
}
close (FILE);

Så kan du referere til felterne som:
$Linier[Linie nummer - 1][felt nummer - 1]

Altså udskrive linie 4, felt 7:
print $Linier[3][6];

Michael
Avatar billede mukke Nybegynder
04. november 1999 - 14:20 #3
OK.. jeg indrømmer mit det var bugbefængt.. så her kommer lige en lidt bedre version :)


open (FILE, "<$Filnavn");  ## åbner filen
@Linier = <FILE>;
close (FILE);
for $Linie (@Linier)
{
  @Felter = split/\|/,$Linie;
  push @LinieriFelter, [@Felter];
}
Avatar billede mukke Nybegynder
04. november 1999 - 14:21 #4
(herefter virker $LinieriFelter[linie][felt] - husk dog at 1.linie/felt er 0)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester