SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] 'date', format



"Peder H. Reuther" <sslug@sslug> writes:

> Jeg er i gang med at skrive et 'reminder'-program, der sender mig en mail
> når et eller andet skal huskes. F.eks.

Generelt med datoer, brug formatet YYYYMMDD, det vil sige at det idag
er 20010111. Det gør det muligt at sammenligne datoer præcis som om
det var heltal.

Da jeg stod i samme problem, skrev jeg følgende program, der bruger
Date::Format-modulet til at formaterer tidspunktet. Enkelt og elegant.

(Ok, at bruge tidsstemplingen på ~/.reminderrc er måske et hack)

Programmet er måske ikke helt, som jeg havde ville skrevet det
idag. Men det skulle være klart og enkelt. (Og så er det lavet primært
til at sende som SMS, hvilket gjorde at jeg bare havde brug for en
enkel kort besked.


~/.reminderrc:
# Dette er en lille test fil
#
# Først nogle datoer der er for gamle:
199801010101  Denne besked skal ikke ud.
199812121200  Det skal denne heller ikke.
#Dernæst nogle der skal ud:
199908301800  Spejderoprykning 1830 i UC
199908310700  SS forlæsning kl. 11
199908311800  BeOS foredrag i DKUUG

.../scripts/reminder.pl
#!/usr/bin/perl

# Use, modify and distribute as you like, Peter Makholm 2001

use Date::Format;
use Mail::Send;

my $reminderrc = "/home/disk13/brother/.reminderrc";
my $mailaddr   = "sslug@sslug";

my @filestat = stat $reminderrc;
my $lasttime = $filestat[9];
my $thistime = time;

$then = time2str("%Y%m%e%H%M", $lasttime);
$now  = time2str("%Y%m%e%H%M", $thistime);

open FH, "<$reminderrc" || die ("Couldn't open $reminderrc");

while (<FH>) {
    if (/^#/) { next;
    }
    unless (/(\d{12})\s*(.*)/) {
        warn("Unknown message format in $reminderrc");
        next;
    }
    $messagetime = $1;
    $message = $2;
    if ($then < $messagetime && $messagetime <= $now) {
        push @messages, $message;
    }
}

close FH;

foreach $message (@messages) {
    $msg = new Mail::Send Subject => $message, To => $mailaddr;
    $msg->open->close;
}

utime $thistime, $thistime, $reminderrc;



 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:53
Denne side vedligeholdes af MHonArc .