#!/usr/bin/perl use warnings; use strict; use Data::Dumper; { package MyClass; use DateTime; sub foo { my ($self,$input) = @_; my @ymd = split("-",$input); my $date = { day => $ymd[2], month => $ymd[1], year => $ymd[0], }; my $dt = eval{DateTime->new($date)}; return unless $dt; $date->{dt} = $dt; return $date } sub new { bless {}, shift } } my $dt = 'MyClass'->new; my $result = $dt->foo('2001-01-01'); print Dumper $result;