in reply to Desperate Coding Tidy-up

For generating passwords, you might want to take a look at spew - print out random characters, which will generate the desired number of random characters from the set of characters you choose.

Your "two weeks in the future" code could be more tightly written as:

use constant WEEK => 60 * 60 * 24 * 7; my $expiry_date = sprintf '%04d-%02d-%02d', sub { $_[5]+1900, $_[4]+1, $_[3] }->(localtime(time + 2 * WEEK));

The code to update the postfix virtual table looks possibly more complicated than it should be, but I'm not clear on your intent. What are you trying to do?

You should use Mail::Sendmail (which, despite its name, does not rely on sendmail(1)), or another mail sending module, rather than attacking the sendmail program directly. Instead of a row of print statements, you should use a heredoc:

print MAIL <<"END_OF_MAIL"; To: bar\@foo.com Reply-to: $email From: $email Subject: AP3k New User Signup Test Mail1 END_OF_MAIL
All Of The Variables Have Been Sanitised By Another Perl Script

That means nothing. You should re-sanitise them again in this script.


print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u'

Replies are listed 'Best First'.
Re: Re: Desperate Coding Tidy-up
by sauoq (Abbot) on Aug 29, 2002 at 09:10 UTC

    I have to admit that I really like that anonymous sub idiom you use. I saw it in your post the other day and upvoted the node just because of that.

    I also have to admit that, seeing it here next to the more obvious approach, it loses a bit of its appeal to me. It really doesn't buy you much and it's a little hard on the eyes.

    Don't get me wrong. I still like it. I'm just going to have to search for other places to use it. :-)

    -sauoq
    "My two cents aren't worth a dime.";
    
Re: Re: Desperate Coding Tidy-up
by Anonymous Monk on Aug 29, 2002 at 10:04 UTC
    Hi There,

    Thanks for the pointers and snippets, they are much appreciated.

    The postfix file looks like this:
    foo.com VIRTUALDOMAIN @foo.com bob bob@foo.com bob chris@foo.com chris bar.com VIRTUALDOMAIN @bar.com bob bob@bar.com bob chris@bar.com chris

    I need to: use the variable $domain which will contain e.g "foo.com", seek to the line that starts with foo.com, move down two lines, do a return, and then print $username\@$ddomain\t$username. So if the username is don and the domain is bar.com, i need the code to locate the line starting with bar.com, drop down to lines, do a return and then print so the postfix file will then look like:
    foo.com VIRTUALDOMAIN @foo.com bob bob@foo.com bob chris@foo.com chris bar.com VIRTUALDOMAIN @bar.com bob don@bar.com don bob@bar.com bob chris@bar.com chris

    Cheers