Perlwannabe wrote: > > I posted a problem to the mailing list with a similar question I had some > time ago regarding replacing data between fields. Unfortunately, I am > having a difficult time with the problem. I am including the code and a > sample of the data. Could someone please give me a clue as to why this is > not working. I have exhausted myself before re-contacting the list. When > I run the code, the file remains exactly the same and nothing is changed > or > replaced. > > ######################## BEGIN CODE ########################## > #!/usr/bin/perl > use warnings; > use strict; > use LWP::Simple; > > my $file10 = "C:/Test_Folder/test_data/input.txt"; > #declare the input > file as the static file name > open(FILE,"<$file10") || die "Could not open file for reading! > $!"; #open file for reading > open(TEMP,">$file10.tmp") || die "Could not open file for writing! > $!"; #open file for writing > while(<FILE>){ #begin while > s{ (?<=HOW) (.+?) (?=NUMBER:) } { ( $a = $1 ) =~ tr/\t/ /; $a > }ex; > print TEMP $_; #print result to temp file > } #end while > #Close the files. This should happen automatically, but the routine is > written for safety > close FILE || die "Could not close file! $!"; > close TEMP || die "Could not close file! $!"; > unlink $file10; > #remove the old file > rename("$file10.tmp",$file10) || die "The file could not be renamed! > $!"; #rename the temp file to the old file's name > > ##################### END CODE ##################################### > > Here is a sample of the data file: > > Name:<tab>John Smith<tab>Address: 1234 Sparrow Ave.<tab>HOW MANY CHILDREN: > 3<tab>NUMBER OF PETS: 2<tab>TYPE OF PETS: Fish, Dog<tab>FAVORITE NUMBER: > 13<tab>City: New York<tab>State: New York<tab>Zip: 11011 > > Obviously, I do not want all of the useless information between Address > and City. I want to delete everything between HOW and NUMBER: (including > the HOW and NUMBER:<tab>) So my file will look like this: > > Name:<tab>John Smith<tab>Address: 1234 Sparrow Ave.<tab>City: New > York<tab>State: New York<tab>Zip: 11011
According to your data, this seems to work: while ( <FILE> ) { print TEMP join '', grep /(?:^|\t)(?i:name|address|city|state|zip):/, # fields to keep /(?:^|\t)[^:]+?:\s+[^\t]+/g; # split the fields } John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]