anoniem Geplaatst: 1 mei 2004 Delen Geplaatst: 1 mei 2004 Ik heb een foreach loop met de elementen van $key: foreach $key (keys(%hash)) Nu wil ik alle ellementen van deze loop opslaan in een array zodat ik ze later kan matchen met strings. Hoe doe ik dat? Bedankt Quote Link naar reactie
anoniem Geplaatst: 1 mei 2004 Auteur Delen Geplaatst: 1 mei 2004 zoiets? foreach $key (keys(%hash)) { unshift @elementen,$key; } Maar waarom foreach? @elementen = keys(%hash); Quote Link naar reactie
anoniem Geplaatst: 1 mei 2004 Auteur Delen Geplaatst: 1 mei 2004 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? Quote Link naar reactie
anoniem Geplaatst: 1 mei 2004 Auteur Delen Geplaatst: 1 mei 2004 Volgens mij doe je het veel te ingewikkeld. Kun je nog eens kort omschrijven wat je precies wilt doen? Als je het zo wilt houden, kun je dat matchen net zo goed in de bestaande loop opnemen. Quote Link naar reactie
anoniem Geplaatst: 2 mei 2004 Auteur Delen Geplaatst: 2 mei 2004 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. Quote Link naar reactie
anoniem Geplaatst: 2 mei 2004 Auteur Delen Geplaatst: 2 mei 2004 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? Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen