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
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|