#!/usr/bin/env perl use strict; use warnings; use Time::Local; sub Date_Conversion_Julian{ my $origdate = shift; # my $date= Time::Piece->strptime($origdate$, '%Y-%m-%d'); #print $date->strftime('%d/%m/%Y'),"\n"; print "d:$origdate\n"; my $dateformat = "mm/dd/yyyy"; if ($origdate =~ /\//) { print "test\n"; if($dateformat eq 'mm/dd/yyyy') { my @dateparts = split /\//, $origdate ; if (length($dateparts[0])<2) { $dateparts[0]= "0".$dateparts[0]; } if (length($dateparts[1])<2) { $dateparts[1]= "0".$dateparts[1]; } my ($mon,$mday,$year ); if(length($dateparts[2]) > 2) { ($mon,$mday,$year) = ( ($dateparts[0] - 1 ), $dateparts[1], ( $dateparts[2] - 1900 ) ); } else{ ($mon,$mday,$year) = ( ($dateparts[0] - 1 ), $dateparts[1], ($dateparts[2] + 100 ) ); } my ( $sec, $min, $hours ) = ( "00", "00", "12" ); my $julian_date = timelocal($sec, $min, $hours, $mday, $mon, $year); $julian_date = ($julian_date / 86400) + 2440588; return $julian_date; } else { my @dateparts = split /\//, $origdate ; if (length($dateparts[0])<2) { $dateparts[0]= "0".$dateparts[0]; } if (length($dateparts[1])<2) { $dateparts[1] = "0".$dateparts[1]; } #my @dateparts = $dateparts; #print Dumper \@dateparts; my ($mon,$mday,$year ); if(length($dateparts[2]) > 2) { ($mday,$mon,$year) = ( ($dateparts[0]), $dateparts[1] - 1, ($dateparts[2] - 1900) ); } else{ ($mday,$mon,$year) = ( ($dateparts[0]), $dateparts[1] - 1, ($dateparts[2] + 100) ); } } } } print Date_Conversion_Julian("21/03/2018"); __END__ $ perl test.pl d:21/03/2018 test Month '20' out of range 0..11 at test.pl line 42.