"Sudarsan Raghavan" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
>
>
> Patrick Bateman wrote:
>
> > Hi everyone
> >
> > Need help with this please, pretty please!!
> >
> > I open a file containing this:
> > e.g.
> > John:1111111:0
> > Peter:2222222:0
> > Jane:3333333:0
> >
> > Now I select a particular name from an input.
> > Now comes the part I'm having trouble with.  For that name I've selected
how
> > do I increment the count value.
> > e.g.
> > If I select Peter then file is modified to this:
> > John:1111111:0
> > Peter:2222222:1
> > Jane:3333333:0
> >
> > and so on....
> > Heres the sub routine that needs to be fixed....
> >
> > sub FIND {
> > open (FIND, "prac1.txt") or die "$! file error"
>
> >
> > #open file
> >
> > while (<FIND>) {
> >   ($name, $phone, $count) = split(/:/, $_);
> > #separate values
> >   if ($name =~ $compare[1])
> > {                                                            #compare
name
> > value with input
> >     print "$phone\n";
> > #display phone number for that name
> >     close FIND;
> >     open (APPEND, ">>prac1.txt") or die "$! file error";
> > #increment count value for that name,
> >     $count++;
> > #and substitute it with original count.
> >     substitute APPEND $count;
>
>     This will write Peter:......:1 to the end of the file not in it's
original
> location. You will end up with
>      John:....:0
>      Peter:......:0
>      Jane:.....:0
>      Peter:......:1
>
>      You will have to open a temporary file, write the modified contents
to it
> and rename it back
>      to the original file name. You will subroutine will end up like
>
>     open (FIND, "prac1.txt") or die "Error Message";
>     open (TMPFIND, ">prac1.txt.tmp") or die "Error Message";
>
>     while (<FIND>) {
>       chomp;
>       my ($name, $phone, $count) = split (/:/);
>       $count++ if ($name eq $compare[1]); #Assuming $compare[1] contains
the
> input name
>       print TMPFIND join (':', $name, $phone, $count), "\n";
>      }
>      close (FIND);
>      close (TMPFIND);
>      rename ("prac1.txt", "prac1.txt.old");
>      rename ("prac1.txt.tmp", "prac1.txt");
>
> >
> >     close APPEND;
> >  }
> >  }
> > }

Thanks for the help!! Unfortunetly this solution only copies the modified
line to the tmp file.  I need the all the other data to stay unchanged.
e.g.   John:1111111:0
         Peter:2222222:0
         Jane:3333333:0

becomes

         John:1111111:0
         Peter:2222222:1                 #where peter is the name called in
the input
         Jane:3333333:0

Thanks anyway!

Patrick Bateman

> >
> > --
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
>



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to