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
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.