%hash3 = map {
$_->{year}.$->{month}.$_->{day}.$_->{hhmm}= $_
} @array1;
for(@array2){
$k=$_->{year}.$->{month}.$_->{day}.$_->{hhmm};
if(!defined $tmp{$k}){
$hash3{$k}=$_;
}else{
$hash3{$k}->{data2}=$_->{data2};
}
}
@array3=map { $hash3{$_} } sort keys %hash3;
#or just
@array3=values %hash3;
#if you don't care about sorting
####
if(!defined $tmp{$k}){
##
##
if(!defined $hash3{$k}){