From: "JupiterHost.Net" <[EMAIL PROTECTED]> > Mandar Rahurkar wrote: > > I have a bunch of text (multiple paragraphs). I want to find a > > sentence > > like 'Susan * the water' (No its not a HW problem). Here's what I am > > doing: > > > > #! /usr/bin/perl > > use strict; > > > use warnings; > > > > $file="temp.txt"; > > my $file = 'temp.txt'; > > > open(fp,$file) or die "Cant open $file :$!\n"; > > open(FP,$file) or die "Can not open $file : $!\n"; > > > local $/=""; > > why ??
Because otherwise the <FP> would read individual lines. And the sentence can easily be split to several lines. If you set $/ to "" then the file is read in paragraphs, not lines. That is each <FP> now returns several lines until it finds an empty one. > > while (<fp>) { > > while(<FP>) { > > > while( /(susan)(\D+)[the|water]\b/xig ) \D means "non-digit", What's wrong with sentence Susan filled 3 glasses with the water? And the \D+ matches as much text as it can, it won't stop on the first "the water". [the|water] means exactly the same as for example [aehrtw|]. Not what you meant right? I believe you want something like this: while (/(susan[^.?!]+the\s+water\b)/ig) { print $1,"\n"; } Jenda ===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz ===== When it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- Terry Pratchett in Sourcery -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>