Ga naar inhoud

Perl: foreach loop en elementen opslaan


Aanbevolen berichten

oops, je hebt gelijk. In een foreach loop zit er eigenlijk al een array ingebakken. :oops: Ik heb een tekstbestand. Ik heb daar bepaalde woorden uitgehaald met hashes en nu dus opgeslagen in een array. Die woorden wil ik weer gaan matchen met alle regels van het tekstbestand. Dit lukt me niet, omdat ik de while loop al heb afgesloten. Een voorbeeld: [code:1:5707ad1792] while ($line = <FILE>) { if ($line =~ m/\b$word1\b/i) { $hash1{$line}++; } } @elements = keys(%hash1); [/code:1:5707ad1792] Hoe kan ik theoretisch de @elements gaan matchen met de lines in het tekstbestand nadat de while loop gesloten is?
Link naar reactie
Ik heb een wiskundige formule waarbij ik de statistiek van een tekstbestand kan bepalen. Nu zal ik je niet lastig vallen met die formule. kort samengevat: er zijn bijv. in totaal 10 regels (in mijn bestand vele duizenden). 6 regels bevatten woord X. Deze 6 regels met woord X wil ik dan weer opbreken in losse woorden, bijv. 15 woorden in totaal. Al deze 15 woorden wil ik met dezelfde methode bij woord X met de hele tekst matchen. Dan wil ik per woord kijken hoeveel regels van de totale tekst dat woord bevatten. Dat wil ik dus voor elk woord bijhouden. Ik heb van woord X een argument gemaakt wat de gebruiker moet invoeren. Ingewikkeld, ja ik weet het. Ik krijg er hoofdpijn van.
Link naar reactie
Ach, je moet het gewoon in kleine stapjes doen. Als ik het goed begrijp: 1. inlezen regels 2. checken op aanwezigheid woord x 3. indien ja, in array plaatsen 4. regels in array splitsen in woorden 5. deze woorden vergelijkbaar aan 2. matchen aan de hele tekst 6. frequentie van deze woorden tellen Je moet dus een aantal keren matchen. Om te matchen aan de gehele tekst, zul je dus bij het inlezen van de regel, ook de gehele tekst in een string moeten plaatsen. Of het inlezen moeten herhalen. Het eerste vreet geheugen, het tweede vreet tijd. Ik denk dat het tweede wel eens sneller zou kunnen zijn. Nog een puntje: gaan het echt om regels, en niet om zinnen?
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...