|
|
|
|
Bonjour,
Je suis un debutant en linux et en perl, merci d'etre compréhensif ^^ , j'ai deja lu pas mal de truc sur le sujet, enfin je remerci d'avance ceux qui pourront m'aider ^^
J'ai une date contenu dans une variable : avec ce type de format : $date1 = Sep 10 12:25:32 2010
J'aimerai la comparer avec la date actuel ($date2, que j'ai aussi dans une variable avec le meme format) , et que le script ecrive un message si le delai entre les deux date est inférieur ou égal à 2mois ($date1 - $date2 =< 2mois)
Je peu installer des packages, ou je sais pas comment sa s'appelle du genre Date::Time, d'apres ce que j'ai lu sur d'autre sujet ca pourrai etre utile.
A mon avis, c'est très simple pour qqun qui s'y connait, mais en tout cas pas pour moi ^^
Voila, merci ^^
Salut,
|
Je l'ai lu mainte et mainte fois, mais des choses m'echappe, deja faut-il installer le Date::Time dont il parle ?
|
Salut,
#!/usr/bin/perl use strict;use warnings; use Date::Manip; use Date::Calc qw(Delta_Days); my $date1 = "Sep 10 12:25:32 2010"; my $date2 = "Dec 10 20:57:32 2007"; my $d1 = ParseDate($date1); my $d2 = ParseDate($date2); my ($a1,$m1,$j1,$H1,$M1,$S1) = UnixDate($d1,"%Y","%m","%d","%H","%M","%S"); print "$a1,$m1,$j1,$H1,$M1,$S1\n"; my ($a2,$m2,$j2,$H2,$M2,$S2) = UnixDate($d2,"%Y","%m","%d","%H","%M","%S"); print "$a2,$m2,$j2,$H2,$M2,$S2\n"; my @d1 = UnixDate($d1,"%Y","%m","%d"); print "@d1\n"; my @d2 = UnixDate($d2,"%Y","%m","%d"); print "@d2\n"; my $diff = Delta_Days(@d2,@d1); print "$diff jours entre @d2 et @d1\n"; lami20j |
Coucou, et merci pour vos reponse, j'ai essayer de comprendre ton code tout d'abord, il y avait qq erreur, que je pense avoir trouver
|
Re,
|
Salut,
|
Le script figure juste au dessus, c'est celui de lami20j,
my $d1 = ParseDate($date1); J'ai lu la doc de Date::Manip, et j'ai chercher dans le code de Manip.pm : voila aparemment la fonction qu'il n'arrive pas a réaliser : sub Date_ConvTZ {
print "DEBUG: Date_ConvTZ\n" if ($Curr{"Debug"} =~ /trace/);
my($date,$from,$to,$level)=@_;
if (not Date_Split($date)) {
my $err = "date passed in ('$date') is not a Date::Manip object";
if (! $level) {
croak $err;
} elsif ($level==1) {
carp $err;
}
return "";
}
Je l'ai chercher par rapport au message d'erreur et je n'ai aucune idée d'où ca peut venir. Merci pour vos reponses |
Ben, justement, ce que j'ai besoin c'est ton script, en fait la partie qui contient $date1
|
Le code que je t'ai mis au dessus, c'est la fonction de Manip.pm qu'il n'arrive pas realiser avec le ParseDate de ton code(et du mien), c'est peut etre pas utile, mais ca pourrai aider qqun a comprendre pourquoi il m'affiche cette erreur.
#!/usr/bin/perl5.8.0 use strict;use warnings; use Date::Manip; use Date::Calc qw(Delta_Days); my $date1 = `openssl x509 -in XXXX.crt -enddate -noout`; $date1=~s/notAfter=//; $date1=~s/GMT//; my $date2 = localtime(time); $date2 =~s/Mon//; $date2 =~s/Tue//; $date2 =~s/Wed//; $date2 =~s/Thu//; $date2 =~s/Fri//; $date2 =~s/Sat//; $date2 =~s/Sun//; $date2 =~s/^[ \t]+//; my $d1 = ParseDate($date1); my $d2 = ParseDate($date2); my ($a1,$m1,$j1,$H1,$M1,$S1) = UnixDate($d1,"%Y","%m","%d","%H","%M",","%S"); print "$a1,$m1,$j1,$H1,$M1,$S1"; print "\n"; Je n'ai pas continuer sachant qu'il m'affiche deja une erreur Enfin le mien ou le tiens de code ca ne change rien, il met l'erreur dans les 2 au meme moment, celui du ParseDate Et encore merci pour ta patience ! |
Et meme en essayant un code aussi simple que ca :
#!/usr/bin/perl use strict;use warnings; use Date::Manip; my $date1 = "Sep 10 12:25:32 2010"; my $d1 = ParseDate($date1); Il me met toujours la meme erreur : date passed in ('2010091012:25:32') is not a Date::Manip object at test3.pl line 7 Pour bien te montrer que peut importe $date1, c'est le ParseDate qui pose problème |
Bon, je vois que tu veux tenir ton code secret.
lami20j@debserv:~/trash$ cat ccm.pl #!/usr/bin/perl # use strict;use warnings; use Date::Manip; # my $date1 = "Sep 10 12:25:32 2010"; my $d1 = ParseDate($date1); print "$d1\n"; lami20j@debserv:~/trash$ perl ccm.pl 2010091012:25:32donc l'erreur viens peut être du traitement apprès Date::Manip lami20j |
Mon code n'es pas secret et je te l'ai afficher au dessus, je choppe $d1 avec la commande openssl, c'est en faite la date de fin d'un certificat.
|