The /usr/lib/rpm/find-requires.perl script decides whether to call perl.req for a particular file based on whether there is a "#!perl" line at the top of the file. This means that perl modules, which don't have this line as they are not designed to be executed directly, don't get their dependencies correctly calculated.
rpm does not automagically detect perl module requirements using find-requires.perl. You will need to package your perl modules differently, enabling find-requires.perl. See any Red Hat CPAN package for an example.
Created attachment 9021 [details] Makes find-requires.perl run perl.req on all .pm files, regardless of #! line
I'm using the Redhat cpanflute script to generate CPAN rpms, and it does enable find-requires.perl; the problem is that this script decides whether to call perl.req for a particular script by looking for #!/usr/bin/perl at the top. For example, the redhat powertools RPM perl-Convert-BER-1.26-6.i386.rpm fails to list perl(Math::BigInteger) and perl(bytes) as dependencies, despite the fact that these are not in the standard distribution. I've uploaded a patch that works for me, but it does open up other problems because the perl package is not marked as providing things like Perl (syscall.ph) which perl.req detects as a requirement for some packages.
Changing component
I believe this problem is fixed in rpm-4.0.4 /usr/lib/rpm/perl.req. Please reopen if I'm wrong.