in reply to printing references

eval { field( \@CBR, 3, \@CBRF3, $#CBRF3 ) }; warn "Some error with CBR3: $@\n" if $@;

I'd rarely use this code, as the variable named CBRF3 makes me think you have at least two other arrays named CBRFn. I'd rather have them in a parent array, which would render their names pretty useless.

Still, it seems like a good opportunity to push your error handling code up a level, 'cuz you need it at the caller, not the callee.