Andrej Kastrin wrote: > Hello dears, Hello,
> I want to count words in the following file: > ------------------------------ > ID- some number > TI- some text BB > AB- some text A BB > AU- some text > > ID- some number > TI- some GGG text > AB- some text GGG > AU- some text > > ID- some number > TI- some text > AB- some text Z > AU- some text > ------------------------------ > > I wrote the script which parses througt the file and return the total > number of words, defined in @list. Here is the problem. There could be > more then one equal word in each record (see the first record where BB > occurs twice). > > I don't know, how to modify my code; so if there are multiple same words > in a record, frequency of each word per record does not exceed 1. The value of $/ starts out at "\n", in other words, read one "line" at a time. > while (<>){ > $/="\n\n"; #set input separator to read record > $/="\n"; #set input separator to parse within a record You change $/ and then change it back to the default so in effect you are not really changing $/ at all. > chomp; chomp() is not really needed. > if(/^TI.+/){ You are only modifying $wds for lines that begin with the string 'TI' so the 'BB' on the line beginning with 'AB' will not be counted. > foreach $w (split){ > $wds++ if defined($words{$w}) > } > } > } > > print "\n$wds words"; #print frequency of words, defined in @list John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>