Recently, I was asked to find the first occurrence of a word in a text file and replace it with an alternate word. This was my solution. As a new Perl programmer, I feel like this solution was too C like and not enough Perl like. So, my question is what would have been the Perl like solution to this problem?
In this example there is little risk of running out of memory reading the file. But had this been a production environment or an unknown file size, I would have had to consider that. #!/usr/bin/perl use strict; use warnings; #program finds the first occurrence of the word Dood and #replaces it with the word Dude in the file data.txt. open FP, "+<", "data.txt" || die "Cant open data.txt " . $!; my @buffer = <FP>; seek FP,0,0; my $do_replace = 1; #used to control replacing in multiline files. my $line; my $data; foreach $data (@buffer) { if ($do_replace == 1) { $line = $data; $data =~ s/Dood/Dude/; if ($line ne $data) { $do_replace = 0; #we did a substitution so do no more. } } print FP $data; } close FP; #Test data #Dude! Where's my car? #Dood! Where's my car? #Dood! Where's my car? -- Ronald Weidner