Avatar billede terra Nybegynder
07. januar 2006 - 23:58 Der er 16 kommentarer og
1 løsning

Hente og skrive en liste ud fra en txt database

Hei,
Jeg har en database balabala.txt med:
1,tele.dk,TY
2,figo.fy,CZ
3,dere.be,TH
4,tele.dk,ZX

Hvordan kan jeg skrive ud en liste med ale 'tele.dk'?
dvs.:

1 TY
4 ZX

Er det noen som kan hjelpe lidt her?
MVH Terra
Avatar billede nielle Nybegynder
08. januar 2006 - 09:26 #1
Et bud:

open(DB, "<dinFil.txt") || die("Kunne ikke åbne filen.");

while (<DB>)
{
    chomp;
    @lineParts = split(/,/, $_);
    printf "%s %s\n", $lineParts[0], $lineParts[2];
}

close(DB);
Avatar billede nielle Nybegynder
16. januar 2006 - 14:53 #2
Har du fået kigget på det?
Avatar billede terra Nybegynder
17. januar 2006 - 23:49 #3
Hei nielle! Er tilbage fra en lag reise ...
Den give mig en hell liste, dvs. alle $lineParts[0] og $lineParts[2] men du er inne på noe her:) Hmm..., hvordan kan jeg liste bare 'tele.dk' her?
Avatar billede nielle Nybegynder
18. januar 2006 - 00:02 #4
Hvad er kriteriet for lige at få fat på den ud af alle de andre? Er det fordi at den er den 1.linje, eller måske fordi at den er den eneste .dk i blandt de ander? Eller hvad?
Avatar billede terra Nybegynder
18. januar 2006 - 00:08 #5
if ($lineParts[1] eq 'tele.dk'){
  printf "%s %s\n", $lineParts[0], $lineParts[2];}
Avatar billede terra Nybegynder
18. januar 2006 - 00:12 #6
He,...he,he, og det var det:) smi et svar nielle
Avatar billede nielle Nybegynder
18. januar 2006 - 06:56 #7
Svar :^)
Avatar billede terra Nybegynder
18. januar 2006 - 18:21 #8
nielle -> hm..., hvordan kan jeg lave en ny string istedenfor -> print it as:
printf "%s %s\n", $lineParts[0], $lineParts[2];}

Jeg skal bruke output i et andet sub_, det er her det stoper opp nu.
Any ideas?
Avatar billede nielle Nybegynder
18. januar 2006 - 19:18 #9
$nyString = $lineParts[0] . " " . $lineParts[2];

- eller:

$nyString = sprintf("%s %s", $lineParts[0], $lineParts[2]);
Avatar billede terra Nybegynder
18. januar 2006 - 19:57 #10
Jeg har prøvd begge, alt jeg får er altid den sidste linje.
Avatar billede nielle Nybegynder
18. januar 2006 - 20:04 #11
Hvis du skal have begge to, skal de jo gemmes i et array:

open(DB, "<dinFil.txt") || die("Kunne ikke åbne filen.");

@arr = ();

while (<DB>)
{
    chomp;
    @lineParts = split(/,/, $_);
    if ($lineParts[1] eq 'tele.dk')
    {
        push(@arr, sprintf("%s %s\n", $lineParts[0], $lineParts[2]));
    }
}

close(DB);
Avatar billede terra Nybegynder
18. januar 2006 - 20:17 #12
Nix har prøvd med:
$nyString = push(@arr, sprintf("%s %s\n", $lineParts[0], $lineParts[1]));

dvs.:
open(DB, "<dinFil.txt") || die("Kunne ikke åbne filen.");

@arr = ();

while (<DB>)
{
    chomp;
    @lineParts = split(/,/, $_);
    if ($lineParts[1] eq 'tele.dk')
    {
        $nyString = push(@arr, sprintf("%s %s\n", $lineParts[0], $lineParts[1]));
    }
}

close(DB);

print $nyString;
# men jeg får bare et 2 tall
Avatar billede terra Nybegynder
18. januar 2006 - 20:18 #13
$nyString = push(@arr, sprintf("%s %s\n", $lineParts[0], $lineParts[2]));
# sku det være
Avatar billede nielle Nybegynder
18. januar 2006 - 20:19 #14
print @nyString;
Avatar billede nielle Nybegynder
18. januar 2006 - 20:20 #15
Ikke:

$nyString = push(@arr, sprintf("%s %s\n", $lineParts[0], $lineParts[1]));

- men:

push(@arr, sprintf("%s %s\n", $lineParts[0], $lineParts[1]));
Avatar billede nielle Nybegynder
18. januar 2006 - 20:20 #16
.. og så ligger resultatet i arrayet @arr
Avatar billede terra Nybegynder
18. januar 2006 - 20:25 #17
Tusind tak for hjelpen, ser lys i det andet ende nu :)
Ha en god aften.
MVH Terra
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