Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I need a more efficient or better way to do this, my current script has a static number of emails to send. My new script needs it to be dynamic. I can only send at most 8 email address per time. Here's my code:
#Telnets to SASUX101 to send email print "Attempting to telnet into SASUX101 to email txt files\n"; + $t = new Net::Telnet (Timeout => 12000, Prompt => '/\> $/'); $username = "user"; $passwd = "pass"; $email_g1 = "$email_list[0] $email_list[1] $email_list[2] $email_list[ +3] $email_list[4] $emails[5] $me"; $email_g2 = " $email_list[6] $email_list[7] $email_list[8] $email_list +[9] $me"; $t->cmd("mailx -s 'usage' $email_g1 <test$date.txt"); $t->cmd("mailx -s 'usage' $email_g2 <test$date.txt");
I need to make this dynamic based on how many email address I have for it to send multiple addresses with 5 or 6 in each email group. How would I do this? I am limited to only emailing through mailx on unix. I know I need to create a loop but not sure how to make it work. I have only been programming in Perl for 2 months. Any help would be appreciated.

Replies are listed 'Best First'.
Re: grouping email addr to send
by kwaping (Priest) on Jan 31, 2006 at 20:59 UTC
    This little snippet should steer you in the right direction.
    #!/usr/bin/perl use strict; use warnings; my @list = (qw|one two three four five six seven eight nine ten eleven +|); while (my @subset = splice(@list,0,8)) { print join(' ',@subset), $/; }
    You can just replace the print statement with your mail command.
      Thanks for all your help, it works wonderfully.... Exactly what I was looking for... Thanks again...
Re: grouping email addr to send
by idle (Friar) on Jan 31, 2006 at 21:02 UTC
    Why don't you use module for mail? Anyway if you have to do it with command line, the code should look something like this:
    my @email_address; # massive with addresses foreach my $address (@email_addresses) { $t->cmd("mailx -s 'usage' $address <test$date.txt"); }