in reply to How can I make a regex apply to each line of a file?

and it might be a good idea to check the return value of your open call open (FILE, "<$footer") or die "Couldn't open file $footer: $!";

Apart from that, it might not be necessary to read the whole file into memory. So you could do something like

open (FILE, "<$footer") or die "Couldn't open file $footer: $!"; while (my $line = <FILE>) { $line =~ s/something/something_else/g; # print changed line print $line; # do some very complicated other stuff here } close FILE;
But this depends strongly on what you are doing with the lines of the file.

Update: Added comment pointing to more complex operations in while loop.

Thanks davorg, I was aware of your command line solution. Nevertheless I posted in order to stress the fact that there is the while-loop alternative to the memory intensive 'map on array' which was suggested by jj808 and ChemBoy. And I assumed that Kage wanted to do a little bit more than just printing the changed line - although my short snippet didn't show that :)

-- Hofmator

Replies are listed 'Best First'.
Re: Re: How can I make a regex apply to each line of a file?
by davorg (Chancellor) on Oct 30, 2001 at 21:20 UTC

    That's the kind of thing that Perl command line options make very easy:

    perl -i.bak -pe 's/something/something else/g' input.txt
    --
    <http://www.dave.org.uk>

    "The first rule of Perl club is you don't talk about Perl club."