1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | sub Mail_Mailer { my $destination_directory ='/data/'; my $from_address = "abc@gmail.com"; my $to_address = "abc@gmail.com"; my $subject = "SOFT DATA "; my $body = "Dear Sir\nPlease find the complete set of data on sftp\n."; my $cc="test@gmail.com"; opendir (DES,$destination_directory); my @files=readdir(DES); close(DES); my @mail_sent_file=@file; foreach my $mail_file_names (@mail_sent_file) { $body=${body}."\n".$mail_file_names."\n"; } $body=${body}."\nRegards\nreportsadmin."; my $mailer = Mail::Mailer->new("sendmail") or die; $mailer->open( { From => $from_address, To => $to_address, Cc => $cc, Bcc => $bcc, Subject => $subject, } ); print "Going to send the mail."; print $mailer $body; $mailer->close(); print "Mail sent."; return ($mailer); } |
I've used a few techniques for this kind of reading but gets failed until I've read this fine blog . http://www.bashguru.com/2010/05/how-to-read-file-line-by-line-in-shell.html this helps a lot and i have developed a trick for me. Refer to the following example to examine the script : #!/bin/bash #SCRIPT: method2.sh #PURPOSE: Process a file line by line with redirected while-read loop . FILENAME=$1 count=0 while read LINE do let count++ echo "$count $LINE" done < $FILENAME echo -e "\nTotal $count Lines read" I have passed the file in the end of the loop so i didn't need to use pipe that is why i process the file in fastest manner and gives the required output in a quick manner. However i can use one more thing the File Descriptors. The File Descriptors are similar to the normal file pointers however in more analogue way.If you have used C then you will have familier with the the default file openers in C "st...
Comments
Post a Comment