Собственно, накатал функцию для означенной надобности: например, найти файлы пакетов Digest::MD5, File::Map и выполнить fgrep VERSION на каждом из них:
PerlSrch_Pkg Digest::MD5 File::Map -- fgrep VERSION
Код функции:
PerlSrch_Pkg () {
local -a lstPkgNames lstPerlINC
local arg rxPkgNames
[[ $@ ]] || return 1
while (($#)); do
arg=$1; shift
if [[ $arg == '--' ]]; then
break
else
lstPkgNames+=("${arg//::/\/}")
fi
done
rxPkgNames="("$(declare -p lstPkgNames | sed -r -e 's%^.+\[0\]="%[0]="%' -e 's%\s*\[[0-9]+\]="([^"]+)"%\1|%g' -e "s%\)'$%%" -e 's%\|$%%')")"
readarray -t lstPerlINC < <(perl -e 'print join(qq|\n| => grep { !/^\.$/ and -d $_ } @INC),"\n"')
find "${lstPerlINC[@]}" \
-maxdepth 2 \
-type f \
-regextype posix-extended -regex ".*/${rxPkgNames}\.pm" \
$((($#)) && echo "-exec $@ {} ;" || echo '')
}
Пример «утилиты» perlpf (perl-package-finder), использующей оную функцию:
#!/bin/bash
source ${0%/*}/../perl.inc
pkgName=$1; shift
PerlSrch_Pkg $pkgName ${@:+-- $@}
Актуальную версию этой функции и другие полезные маленькие библиотеки для bash можно посмотреть здесь: https://github.com/DRVTiny/bash4-debug-infra