Perdona, es que es mucho más normal, hoy en día, usar DateTime, que Date::Manip.
El siguiente código sí que me funciona:
Using perl Syntax Highlighting
#!/usr/bin/perl
use Date::Manip;
my $dia_hora_actual = ParseDate("now");
print " [$dia_hora_actual]\n";
my $dia_hora_vence = ParseDate('2011-05-25 12:05:55');
print "- [$dia_hora_vence]\n";
my $delta = DateCalc( $dia_hora_vence, $dia_hora_actual , 3);
print "=" x 20, "\n";
print " [$delta] bussines\n";
my $diferencia_minutos = Delta_Format($delta, 0 ,"%mt");
print "= [$diferencia_minutos] minutos\n";
$delta = DateCalc( $dia_hora_vence, $dia_hora_actual);
print " [$delta] normal\n";
$diferencia_minutos = Delta_Format($delta, 0, "%mt");
print "= [$diferencia_minutos] minutos\n";
__END__
[2011052718:29:15]
- [2011052512:05:55]
====================
[+0:0:+0:+2:4:54:5] bussines
= [3174] minutos
[+0:0:+0:2:6:23:20] normal
= [3263] minutos
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
Fíjate que
a) has puesto el modo de cálculo en '3', por lo que estás en modo 'bussines' (en mi ejemplo, saco los dos valores, para compararlos); y
b) el número de minutos que salen es positivo porque DateCalc está calculando ($dia_hora_actual - $dia_hora_vence), y $dia_hora_vence es menor que la fecha actual.
El signo de los minutos indica si ha sobrepasado o no una fecha a la otra.