editing a file using perl script

K

kelly

Hi,
I don't have a code to show you, what I need are references or
algorithms so that I'm in a right track.

By the way, thanks for introducing me the array or arrays. Now I can
continue my script.

Now I want to delete a line from a file. Line being the strings I
got/saved to/from array of arrays.

This website tells me I have to open my file and create a new file and
put my changes to the new file.
http://www.rocketaware.com/perl/perlfaq5/How_do_I_change_one_line_in_a_fi.htm

So here's what I have in mind, or questions on what should I do?
-create a new blank file
-open my existing file where it is full of strings with spaces, \n...etc.
-where do I make my changes?
-how will all the strings from existing file gets copied to new file?
-will I need to save all the existing file strings to array of array or
just array? what will be my separator?
-then when do I do the copying to new file? Before of after deletion of
strings from my array of arrays?
-when or where can I do the deletion?

Sorry about all the questions? I just can't start coding this if I don't
know what to do. Please feel free to tell me websites or which perldoc
I would be needing to research on.

Thanks.
 
J

Jürgen Exner

kelly said:
By the way, thanks for introducing me the array or arrays. Now I can
continue my script.

No idea what you are talking about, please quote appropriate context when
refering to an earlier article.
Now I want to delete a line from a file. Line being the strings I
got/saved to/from array of arrays.

Your Question is Asked Frequently, see
perldoc -q "delete a line"

jue
 
J

Jim Gibson

Hi,
I don't have a code to show you, what I need are references or
algorithms so that I'm in a right track.

By the way, thanks for introducing me the array or arrays. Now I can
continue my script.

Whom are you thanking? Please include some context.
Now I want to delete a line from a file. Line being the strings I
got/saved to/from array of arrays.

This website tells me I have to open my file and create a new file and
put my changes to the new file.
http://www.rocketaware.com/perl/perlfaq5/How_do_I_change_one_line_in_a_fi.htm

The first method on this web page is a typical way of modifying a file.
You should try using it on your file. You should write out your
modified file using a new name and don't rename it or overwrite the
existing file. Inspect the contents of the modified file manually until
you are satisfied that it is correct before coding your program to
overwrite the contents of your existing file.
So here's what I have in mind, or questions on what should I do?
-create a new blank file
-open my existing file where it is full of strings with spaces, \n...etc.
-where do I make my changes?

Make your changes in the strings that contain the lines from the old
file after you have read them in but before you write them out.
-how will all the strings from existing file gets copied to new file?

You will write out the lines using the print statement.
-will I need to save all the existing file strings to array of array or
just array? what will be my separator?

If you read each line and then write it out, you needn't save it. You
would only save it if you needed to change more than one line at a time
or for some other reason.
-then when do I do the copying to new file? Before of after deletion of
strings from my array of arrays?

You don't need an array of arrays to modify a file. You only need one
scalar variable to hold each line, as demonstrated by the solution
given on your referenced web page.
-when or where can I do the deletion?

You can delete a line by not writing it to the modified file.
Sorry about all the questions? I just can't start coding this if I don't
know what to do. Please feel free to tell me websites or which perldoc
I would be needing to research on.

You are confusing two different methods for modifying a file. One is to
read the lines of the file into an array (not an array-of-arrays),
modify the array, then write out the array to a modified file. The
other method is to read one line at a time from the old file, modify
the line if necessary, and write the line out to the file if it should
be kept.

Pick one method and stick with it. The first method will have less
memory usage. The second method allows you to modify more than one line
at a time. Use whichever method suits your purpose.

The first method may be implemented using the Tie::File module, as
Jürgen has recommended. However, I recommend you implement your own
method until you understand programming in Perl better.

See the following for more info:

perldoc -f open
perldoc perlop (and search for "I/O Operators")

FYI: this newsgroup is defunct. Try comp.lang.perl.misc in the future.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,734
Messages
2,569,441
Members
44,832
Latest member
GlennSmall

Latest Threads

Top