anoniem Geplaatst: 22 april 2004 Delen Geplaatst: 22 april 2004 Ik wil op Perl een woordenlijst maken. Nu kan ik het wel met shellscriptjes (tr -s ' ' '\012'), maar Perl is nieuw voor mij. Ik wil elk woord op een eigen regel zetten. Hoe doe je dat in perl? Quote Link naar reactie
anoniem Geplaatst: 22 april 2004 Auteur Delen Geplaatst: 22 april 2004 @words = ($text =~ /\w+/g); print join /\n/, @words; Quote Link naar reactie
anoniem Geplaatst: 22 april 2004 Auteur Delen Geplaatst: 22 april 2004 Gerben bedankt. Zou je misschien je code kunnen uitleggen? Je maakt dus gebruik van de [i:ec1e1e5730]s//[/i:ec1e1e5730] laat met de reguliere expressie [i:ec1e1e5730]\w[/i:ec1e1e5730] alle alphanumerieken vervangen door wat? Vervolgens laat je een newline joinen... Ik ben nogal een newbie wat betreft perl, ik heb meer een C achtergrond, dus de exotische eigenschappen van Perl zijn nog relatief nieuw voor mij. Ik heb een andere manier gevonden die voor mij wat begrijpelijker is: [code:1:ec1e1e5730] @words = split(/\s+/, $line); foreach $word (@words) { print("$word\n"); } [/code:1:ec1e1e5730] Quote Link naar reactie
anoniem Geplaatst: 22 april 2004 Auteur Delen Geplaatst: 22 april 2004 De regel waar het om gaat is een reguliere expressie, die (een of meer) word characters (\w+) eruit pikt. Dit komt meerdere malen voor, die ondervang je met /g, en de resultaten gaan naar de array @words. Dit is dus geen substitute! Quote Link naar reactie
anoniem Geplaatst: 22 april 2004 Auteur Delen Geplaatst: 22 april 2004 [quote:d8ba6c8644="gerben"]De regel waar het om gaat is een reguliere expressie, die (een of meer) word characters (\w+) eruit pikt. Dit komt meerdere malen voor, die ondervang je met /g, en de resultaten gaan naar de array @words. Dit is dus geen substitute![/quote:d8ba6c8644] Ok, je matcht dus alle alphanumerieken... Wat vind je van mijn manier trouwens? Quote Link naar reactie
anoniem Geplaatst: 22 april 2004 Auteur Delen Geplaatst: 22 april 2004 Zou ook moeten werken. Dat is het aardige van perl, je kunt alle problemen op 101 manieren oplossen. Kan trouwens zijn dat ie problemen heeft met regelscheidingen. Waarschijnlijk werkt jou manier ook trager. Maar als het om een enkele/korte tekst gaat, zal dat niet zo'n punt zijn. Denk dat dit trouwens ook zou moeten werken... print join /\n/, ($text =~ /\w+/g); Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen