in reply to Make a copy of a line and add it back to the same file

Try Tie::File, here is a piece of its man page:

# This file documents Tie::File version 0.93 tie @array, 'Tie::File', filename or die ...; $array[13] = 'blah'; # line 13 of the file is now 'blah' print $array[42]; # display line 42 of the file $n_recs = @array; # how many records are in the file? $#array -= 2; # chop two records off the end for (@array) { s/PERL/Perl/g; # Replace PERL with Perl everywhere in the fi +le } # These are just like regular push, pop, unshift, shift, and splice # Except that they modify the file in the way you would expect push @array, new recs...; my $r1 = pop @array; unshift @array, new recs...; my $r1 = shift @array; @old_recs = splice @array, 3, 7, new recs...; untie @array; # all finished

Hope this helps, Valerio

Replies are listed 'Best First'.
Re: Re: Make a copy of a line and add it back to the same file
by the pusher robot (Monk) on Aug 26, 2002 at 22:56 UTC
    'course, if you're aiming for something a bit less complicated, there's always:
    perl -pi -e 's/old text/new text/' filename
    ...assuming, of course, that that's what you're trying to accomplish (the original question wasn't all that clear on that point)
      the_pusher_robot: Basically Iam reading a bunch of lines from a file. One of the line looks like: cdsadmin -t -O :c:\data"; I want to make a copy of this line, then change the the "-t" to "-d" in the copy. I then want to add this new line(copy) back to the file. The file now contains the original lines plus the new one.
        ah, I see. In that case, don't use my solution :-)