I was looking at the Mail::Sendmail module from CPAN and I did not find 
anything that showed printing a body.  How do I print a body of text data 
from a variable?
The highlighted code is not working but I was playing with it to get this 
message with the scaler $ftapes listed.

thank you!


## Set pragmas

        use strict;
        use Mail::Sendmail;

## Set and edit variables

        my $foreigntapes="/usr/local/log/foreign_tapes.log";
        delete $ENV{'IFS'};
        local $ENV{'PATH'} = 
"/usr/epoch/bin:/usr/epoch/EB/bin:/usr/bin:/usr/sbin:/bin:/sbin";
        #print $ENV{'PATH'},"\n";

## Traverse through array and play with data

        open (OUT, ">>$foreigntapes") || die "could not open file:$!";
        my @ftapes = grep s/^barcode=//, `evmvol -w label_state=1`;
        print OUT "@ftapes";
        if ( -s OUT ) {
        my %mailman = ( From    => 'EDM01 <[EMAIL PROTECTED]>',
                     To         => 'Derek Smith <[EMAIL PROTECTED]>',
                     Subject    => "Foreign Tapes Found, now attmepting to 
label" ); 
 
        sendmail (%mailman) or die $Mail::Sendmail::error; 
        print %mailman <<EO_SIG;
        EDM foreign tapes were found, \n, print OUT "@ftapes"
        EO_SIG;
                foreach (@ftapes) {
                print $_;
                #`evmlabel -l st_9840_acs_0 -t 9840S -b$_` 
        }
        close (OUT);
 
        } else {
                my $foo="/tmp/ftapes_runfile";
                open (RUNFILE, ">$foo") || die "could not open runfile: 
$!;"
                #exit 0;
        }
        close (RUNFILE);



Derek B. Smith
OhioHealth IT
UNIX / TSM / EDM Teams








"Charles K. Clarkson" <[EMAIL PROTECTED]>
06/02/2004 09:19 AM

 
        To:     <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>
        cc: 
        Subject:        RE: using Mail::Sendmail


[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> wrote:

: All,
: 
: I am getting these errors... any ideas?
: 
: Global symbol "%mail" requires explicit package name at
: foreign_tape_ck.pl line.
: Bareword "EO_SIG" not allowed while "strict subs" in use at
: foreign_tape_ck.pl . foreign_tape_ck.pl had compilation errors.


[snip]
: if ( -s OUT ) {
: my %mailman = ( From => 'EDM01 <[EMAIL PROTECTED]>',
: To => 'Derek Smith <[EMAIL PROTECTED]>',
: Subject => "Foreign Tapes Found" );
: sendmail (%mail) or die $Mail::Sendmail::error;
: print %mailman <<EO_SIG
: EDM foreign tapes were found now attempting to label
: EO_SIG;
: foreach $_ (@ftapes) {
: print $_;
: #`evmlabel -l st_9840_acs_0 -t 9840S -b$_`
: }
: close (OUT);
: }


    Let's rewrite this with some indentation. Doesn't this
seem a little easier to read? Try adding white space to
your scripts and separate lines that do different things.

if ( -s OUT ) {
    my %mailman = (
        From    => 'EDM01 <[EMAIL PROTECTED]>',
        To      => 'Derek Smith <[EMAIL PROTECTED]>',
        Subject => 'Foreign Tapes Found',
    );

    sendmail( %mail ) or die $Mail::Sendmail::error;

    print %mailman <<EO_SIG
    EDM foreign tapes were found now attempting to label
    EO_SIG;

    foreach $_ (@ftapes) {
        print $_;
        #`evmlabel -l st_9840_acs_0 -t 9840S -b$_`;
    }
    close OUT;
}


    Your errors are on the following lines:

    sendmail (%mail) or die $Mail::Sendmail::error;

    print %mailman <<EO_SIG
    EDM foreign tapes were found now attempting to label
    EO_SIG;


    %mail has not been defined. You probably want %mailman.
Why use a HERE doc for a single line?


 sendmail( %mailman ) or die $Mail::Sendmail::error;

 print %mailman, "\nEDM foreign tapes were found now attempting to 
label\n";

    The foreach would be better written as this. Though I
don't think perl will complain.

 foreach ( @ftapes ) {
     print $_;
     #`evmlabel -l st_9840_acs_0 -t 9840S -b$_`
 }


HTH,

Charles K. Clarkson
-- 
Mobile Homes Specialist
254 968-8328





Reply via email to