Your post title and contents make me think perhaps you expect perl to pass the log file contents in place of the log file name. In that case, you need to specifically read the file contents and pass that - perlopentut goes through basic Perl file handling and includes examples that will do what you need. A basic read might look like:
use strict; use warnings; my $LOGFILE = 'file.log'; my @contents = (); open my $fh, "<$LOGFILE" or die "Failed to open $LOGFILE"; while (my $line = <$fh>) { push @contents, $line; } close $fh; print @contents;
If instead you expect to pass the file name, this would seem to be more of an issue with the shell script that with your Perl code. As you have written it, the system call should issue the following OS command:
/home/admin/bin/email.ksh /home/admin/logs/check_jvm/check_jvm_$LOGTIME.log Web Server Issue PROD /home/admin/logs/check_jvm/EmailAlert.log
where $LOGTIME should get interpolated assuming you assign it prior to your $LOGFILE assignment. Have you tried subbing your system call with print join ' ', @args to make sure you are passing what you think?
Update: Forgot to test my open. Fixed.
In reply to Re: Passing the contents of a file in a "system" call to a .ksh script
by kennethk
in thread Passing the contents of a file in a "system" call to a .ksh script
by BrotherElwood
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |