Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Need a little help appending lines

by johngg (Canon)
on Sep 11, 2007 at 21:31 UTC ( [id://638439]=note: print w/replies, xml ) Need Help??


in reply to Need a little help appending lines

Without seeing your "somefile.txt" I'm not sure what you are doing to get your $word. Certainly, the second chomp is superfluous as you can't remove the line terminator twice. My code below is the equivalent of yours except that I don't do the final chop as I can't tell whether it was necessary; it's easy enough to add back in. I perform the parsing of "somefile.txt" in a BEGIN {...} block before going on to append to the lines in the "address" file.

moritz points out that it can be a bad idea to edit a file in place. Perl does, however, have a handy -i flag for in-place editing which, if given an extension, will preserve your original file with that extension, the modified file taking the original name. Given a spurious "tcp" file and an "address" file

$ cat spw638403.txt aajkaj XYZtcpHJHKtcpKJHKH ashhgdasjh JKHKJHtcpUUHtcpHDKJHtcpJHDJAHD kjkjn NHYtcpHHGJJH $ cat spw638403.addr Address1= Address2= Address3= $

running this code (note the -i.bak flag

#!/usr/bin/perl -i.bak # use strict; use warnings; my @list = (); BEGIN { my $inFile = q{spw638403.txt}; open my $inFH, q{<}, $inFile or die qq{open: $inFile: $!\n}; while ( <$inFH> ) { chomp; push @list, ( split m{tcp}, ( split )[1] )[0]; } close $inFH or die qq{close: $inFile: $!\n}; } while ( <> ) { s{$}{$list[$. - 1]}; print; }

with the address file as the argument results in the original file preserved as spw638403.addr.bak and the modified file as spw638403.addr

$ ./spw638403 spw638403.addr $ cat spw638403.addr Address1=XYZ Address2=JKHKJH Address3=NHY $

I hope this is of use.

Cheers,

JohnGG

Update: Clarified point that the scripts needs the name of the file to be modified as an argument.

Update 2: Corrected senior moment with flag. It is, of course, the -i flag, not -p

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://638439]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2025-07-08 15:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.