Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- # something
- # November 2012 - Flip Hess - [email protected]
- use 5.10.0;
- use strict;
- use warnings;
- use Getopt::Long;
- use Data::Dumper;
- use List::Util qw(shuffle);
- use Mail::Sendmail;
- #
- # - Global settings
- #
- my $cheat;
- my $file;
- my $send;
- my $domain = "example.com";
- my @names = ();
- my @copy = ();
- #
- # Do the magic:
- #
- # Get options
- usage() unless GetOptions(
- "h|help" => \&usage,
- "c|cheat" => \$cheat,
- "f|file=s" => \$file,
- "s|send" => \$send,
- );
- # exit if file not found or no options
- usage("Option -f not given\n") if not $file;
- usage("File not found\n") if not -f $file;
- # read file and add lines to array
- open (MYFILE, "$file");
- while (<MYFILE>) {
- my $line = $_;
- next if $line =~ /\ \s/;
- chomp($line);
- push(@names, $line);
- }
- close (MYFILE);
- # copy array
- foreach(@names) {
- push(@copy, $_);
- }
- # randomize both
- @copy = shuffle @copy;
- @names = shuffle @names;
- my $noneq = 'false';
- # vergelijk names[0] met copy[0], names[1] en copy[1] en zo door
- # shuffle tot je een combinatie gevonden hebt waarbij geen enkel veld gelijk is.
- # dit betekent dat er geen enkele naam is waar getrokken = voor
- while( $noneq ne 'true' ) {
- my $count = 0;
- foreach(@names) {
- if ( $_ eq $copy[$count] ) {
- @names = shuffle(@names);
- $noneq = 'false';
- last;
- } else {
- $count++;
- }
- if ( scalar(@names) == $count ) {
- $noneq = 'true';
- } else {
- $noneq = 'false';
- }
- }
- }
- # next counter, combine the first of both arrays as they are all nonequal
- # then send a mail to voor with name getrokken
- my $count = 0;
- foreach(@names) {
- my $getrokken = $copy[$count];
- my $voor = "$_";
- my $email = "$_\@$domain";
- mailtje($voor, $getrokken, $email);
- $count++;
- }
- sub mailtje {
- my $voor= shift;
- my $getrokken = shift;
- my $email = shift;
- my $subject = "Je lootje voor het Byte Sinterklaas Feest!";
- my $message = "
- To: %s,\n
- Hoi %s,\n
- Dit is je digitale maar desalniettemin volledig eerlijk getrokken lootje voor het Byte Sinterklaas Feest!
- Je bent bij deze loting uitgekozen om een surprise of gedicht te maken voor:\n
- ----> %s <----\n\n
- Vriendelijke groeten van Sinterklaas\n";
- if ($cheat) {
- $getrokken = "flip";
- }
- if ($send) {
- sendmail(To => "$email",
- From => "Sinterklaas\@$domain",
- Subject => $subject,
- Message => sprintf($message,$email,$voor,$getrokken)) or warn "ERROR SENDING STATUS REPORT:\n".$Mail::Sendmail::error;
- } else {
- printf("
- To: %s,\n
- Hoi %s,\n
- Dit is je digitale maar desalniettemin volledig eerlijk getrokken lootje voor het Byte Sinterklaas Feest!
- Je bent bij deze loting uitgekozen om een surprise of gedicht te maken voor:\n
- ----> %s <----\n\n
- Vriendelijke groeten van Sinterklaas\n
- =======================================\n",$email,$voor,$getrokken);
- }
- }
- # function that shows usage
- sub usage {
- my $msg = shift || '';
- print <<END;
- A Simple script to yadda yadda
- One love :)
- Flip Hess - flip\@lachendemensen.com - November 2012
- Usage:
- $0 [-f] file [-c] [-s]
- Example:
- $0 -f file --cheat --send
- END
- print $msg if $msg;
- exit 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment