in reply to Re^3: Troubleshooting question
in thread Troubleshooting question

That's not going to work either. That code passes a literal $d to the shell. Use:
my $sed_command = q{sed -e :a -e '$d;N;2,3ba' -e "P;D" /db2/$DB2DBDFT/ +Messages/temp.txt};
From the rest of the code of the OP, I presume that the environment variable $DB2DBDFT is set, and that passing a literal $DB2DBDFT to the shell does the right thing.

Replies are listed 'Best First'.
Re^5: Troubleshooting question
by elittle (Initiate) on Mar 23, 2010 at 18:12 UTC
    I have determined that the person that had written this script was being inefficient. They were running a db2 command putting the output into a variable then writing the variable to a file then reading the file and writing its contents into another file. I have shortened up the code and made it a little cleaner. I have gotten rid of the sed stuff completely and when I run it it does not give me any error message at all. Thank you to all of you for replying. Here is the snippet that I have changed: OLD:
    $bkp = `db2 "list history backup all for $db " |tail -6`; open TEMP, ">$temp"; print TEMP $bkp; close TEMP; print FILE "\nBackup Information:\n"; $bkp_info = `sed -e :a -e "{$d;N;2,3ba}" -e "{P;D}" /db2/$DB2DBDFT/Mes +sages/temp.txt`; if($bkp_info =~ /Start/) { print FILE $bkp_info; }
    NEW:
    $bkp = `db2 "list history backup all for $db " |tail -6`; print FILE "\nBackup Information:\n"; if($bkp =~ /Start/) { print FILE $bkp; }
    This new code saves 4 lines and doesn't give errors and the output via the email is still the same so I have no idea what the original programmer was doing with the sed command.