У меня есть скрипт Perl, который пытается установить некоторые настроенные экземпляры DateTime
и DateTime::Duration
в качестве Readonly
констант. Но я вижу странное поведение при попытке сделать математику на этих объектах, если они Readonly
. Вот минимальный пример:
#!/usr/bin/perl -w
use strict;
use warnings;
use DateTime;
use Readonly;
Readonly my $X => DateTime->now;
my $x = DateTime->now;
Readonly my $Y => DateTime::Duration->new( days => 3 );
my $y = DateTime::Duration->new( days => 3 );
my $a = $X - $Y;
my $b = $x - $y;
print "$a\n";
print "$b\n";
В моей системе (Perl 5.10.0 в OSX) это отображает:
$ ./datetime_test.pl
Argument "2011-07-12T20:36:08" isn't numeric in subtraction (-) at ./datetime_test.pl line 15.
-4305941629
2011-07-09T20:36:08
Похоже, что создание DateTime
и DateTime::Duration
Readonly
приводит к их неправильной работе. Это ошибка? Или я использую Readonly
неправильно? Я также пробовал Readonly::Scalar
и Readonly::Scalar1
, и оба ведут себя одинаково.