If you want to do this from the command line, you can pair the code down a little bit with in-place editing (borrowing vladb's sample data for comparison):
#!/usr/bin/perl
use warnings;
use strict;
# note: define the required strings with
# the input record separator, so no chomp()
# required for comparison
my @required = (
"set CMP_DATA_INBND_DIR=C:\\h\\csscs\\data\\commi\\tmp_queue$/",
"set CMP_DATA_OUTBND_DIR=C:\\h\\CMP\\data\\outbound$/",
"set JAVA_HOME=C:\\h\\COTS\\JAVA2\\1.3$/",
"set CSSCS_DATA=C:\\h\\csscs\\data$/",
);
my %found;
@found{@required} = (0) x @required;
# setting $^I defines the filename "extension"
# to be appended to the backup copy of the
# original file and enables in-place editing:
$^I = '.bak';
while (<>) {
print;
$found{$_}++ if defined $found{$_};
if (eof) {
for (@required) {
next if $found{$_};
print;
}
}
}
$ cat foo.txt
set FOO=BAR
set CMP_DATA_INBND_DIR=C:\h\csscs\data\commi\tmp_queue
set BAR=FOO
set CSSCS_DATA=C:\h\csscs\data
$ ./foo.pl foo.txt
$ cat foo.txt
set FOO=BAR
set CMP_DATA_INBND_DIR=C:\h\csscs\data\commi\tmp_queue
set BAR=FOO
set CSSCS_DATA=C:\h\csscs\data
set CMP_DATA_OUTBND_DIR=C:\h\CMP\data\outbound
set JAVA_HOME=C:\h\COTS\JAVA2\1.3