Aqui está uma solução pouco testada:
#!/bin/sh
# Build a regex to match all the .pm files
_regex=""
for arg in $*; do
arg='echo ${arg} | sed -e 's|::|/|g''
if [ "X${regex}X" != "XX" ]; then
regex="${regex}|"
fi
regex="${regex}(${arg})"
done
regex="%%SITE_PERL%%/(${regex}).pm"
# Find the .pm files and derive the port names from them, then install using portinstall.
find /usr/ports -type f -name pkg-plist -path '*/p5-*' -exec egrep -l $regex {} + | sort -u | sed -e 's|/usr/ports/||' -e 's|/pkg-plist||' | xargs portinstall
Agora, isso não detectará módulos instalados por portas que não possuem um pkg-plist, mas eles são muito minoritários. Há apenas 58 das 4188 portas p5- * no meu sistema que não possuem arquivos pkg-plist.