http://qs1969.pair.com?node_id=557867


in reply to Printing an array in a Here Doc

hi, i tried to cleanup your code
use strict; # safety first use Net::SMTP; my $hostname = `hostname`; my $Log_File = "E:\\Backups\\LOGs\\Sync_Import.log"; open( STDOUTSAVE, ">&STDOUT" ); # save the original STDOUT open( STDOUT, ">>$Log_File" ) or die "Unable to open $Log_File: $!"; # open (Output, "multiutil <cmd>|"); # do not see the nameing; better open( PIPE, "multiutil <cmd>|" ) or do { # save the last open error my $err = $!; # set back to saved STDOUT open( STDOUT, ">&STDOUTSAVE" ); die "Unable to open pipe: $err"; }; my @OutputDetails = map { s!\r?\n!!g; "$_\n" } <PIPE>; # add the line to the front unshift @OutputDetails, "This message sent by the Import Process\n\n"; close PIPE; # close the handle again Mail_Msg(); # set back to saved STDOUT open( STDOUT, ">&STDOUTSAVE" ); sub Mail_Msg { my $smtp = Net::SMTP->new("mail.company.com"); $smtp->mail('ALIAS@company.com'); $smtp->to('ALIAS@company.com'); $smtp->data(); $smtp->datasend(" Subject: Job Failure \n "); $smtp->datasend( <<EOF_MAIL @OutputDetails EOF_MAIL ); $smtp->datasend(); $smtp->quit(); }
but did not really test it. hope you get the idea.
have fun.

UPDATE: minor code changes