ubuntuのbash-completionでもできるんじゃないかと思って試したらできた
$ perldoc IO IO IO\:\:Compress\:\:Zip IO\:\:Seekable IO\:\:Uncompress\:\:Base ...
ubuntuの方はprefixが一致するすべてのモジュールをリストしているけど、リンク先の方は階層を出力しているので見やすい。あと、ubuntuの方は関数のリストが直書きなのでこれまた良くない。
_perldoc() { ... # complete builtin perl functions case $prev in -f) COMPREPLY=( $( compgen -W 'chomp chop chr crypt hex index lc \ lcfirst length oct ord pack q qq reverse rindex sprintf \ ... # 全部直書き