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]