> 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 > }
I originally tried to do this, but it won't work. The data doesn't _always_ have a <tab> before address, sometimes (although seldom) it has a <space>. With grep I would miss the entire address. However, if I were to just select everything and replace it with nothing, that would be the answer. BTW...your solution above is right on the money for about 98% of the file. However, by simply scanning the line and deleting everything between between HOW and NUMBER: that would give me 100%. Any ideas? BTW...can you see why the original code I posted is not working? -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]