== Quote from Johannes Pfau ([email protected])'s article > Brian Brady wrote: > >All > > > >I am working through Andrei Alexandrescus "The D Programming Language" > >but have hit a road block fairly early on. > > > >There is a program in the book which is designed to read through a > >text file and do a simple word count. The program looks like this: > > > >import std.stdio, std.string; > > > >void main() > >{ > > //Compute counts > > uint[string] freqs; > > foreach(line; stdin.byLine()) > > { > > foreach(word; split(strip(line))) > > { > > ++freqs[word.idup]; > > } > > } > > > > //Prints count > > foreach(key, value; freqs) > > { > > writefln("%6u\t%s", value, key); > > } > >} > > > >My query is basically how to read the text file in? > > > >currently I am trying to use > >./readingHamlet cat hamlet.txt > > > >but it just hangs there, not doing anything(for a considerable time) > >so I am assuming I am doing something wrong. There isn't any actual > >mention in the book of *how* reading in the text file should be > >accomplished, so what is the best way to do this? > > > >std.file? > > > >Seems silly providing a program that analyses a text file, without > >telling the reader how to read in the text file, so I am wondering if > >there is some assumed knowledge I am missing? > > > >Regards. > Hi, > stdin.byLine() reads from the standard input, which is your > console/keyboard input by default. The default stdin doesn't have an > end, and unless you type something in, there's no input at all. That's > why the program just hangs. > On Linux/unix you can for example pipe the output from one command to > another: > cat hamlet.txt | ./readingHamlet > this way readingHamlet's standard input is connected to cat's standard > output.
This worked!! As I assumed, it was something simple :S Thank you so much.
