You could use something like the following:
my $datacenter_view = Vim::find_entity_view(view_type => 'Datacenter', filter => {'name' => $name}, properties => ['name']);
my $vm_views = Vim::find_entity_views(view_type => "VirtualMachine', properties => ['name'], begin_entity => $datacenter_view);
print "DC: " . $datacenter_view->{'name'} . "\n";
foreach my $vm (@{$vm_views || [ ]}) {
print " VM: " . $vm->{'name'} . "\n";
}
Basically, you can use a parent entity as the 'begin_entity' property and it will limit results to only those objects under that entity in the inventory tree.