The following answer uses regexes.
# UK-style
my $in_date = '30-04-2007';
(my $db_date = $in_date) =~ s/(\d\d)-(\d\d)-(\d\d\d\d)/$3-$2-$1/;
(my $pr_date = $db_date) =~ s/(\d\d\d\d)-(\d\d)-(\d\d)/$3-$2-$1/;
print "in: $in_date; db: $db_date; pr: $pr_date\n";
# in: 30-04-2007; db: 2007-04-30; pr: 30-04-2007
# US-style
my $in_date = '05-14-2007';
(my $db_date = $in_date) =~ s/(\d\d)-(\d\d)-(\d\d\d\d)/$3-$1-$2/;
(my $pr_date = $db_date) =~ s/(\d\d\d\d)-(\d\d)-(\d\d)/$2-$3-$1/;
print "in: $in_date; db: $db_date; pr: $pr_date\n";
# in: 05-14-2007; db: 2007-05-14; pr: 05-14-2007
Instead of rolling your own, some
CPAN modules might help, such as
Date::Tiny,
Date::Formatter, or
Date::Simple. They look promising but I haven't tried them myself.