in reply to Re^3: perl -i -pe ... with eof() testing
in thread perl -i -pe ... with eof() testing

Thanks, you're right.

Just for the record: I had confused myself unnecessarily by not putting a separator in between the cat of file1 and file2. Which made me wonder why the magical file handle is only being advanced by eof() at the very end, and not at every file boundary.  When you do it properly, however, i.e. something like

cat file1 echo --- cat file2

the output is

... --- perl output to stdout --- line3 opt=bar --- cat after --- line1 line2 --- line3 line1 line2

which shows that line3 of the first file does in fact belong to file2 after the processing...

P.S. I've now settled on suggesting my collegue

perl -i -pe '$f||=s/opt=.*/opt=bar/; $_.="opt=bar\n" if !$f && !@ARGV +&& eof' files...

(but unfortunately it took a little too long to get working to leave an "it's easy with Perl" impression — that's my fault, however :)