Having never used oraperl, it's only a guess that ora_fetch() only returns one line of the result set. If there's an ora_fetchall() method, that might work better. Otherwise, you might need to loop:
my @d;
while (my $row = ora_fetch($cur)) {
push @d, $row;
}