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]

Reply via email to