Bravo для решения @ user80168 (я все еще считаю \
!), Но чтобы избежать всего побега, связанного с псевдонимами и оболочками:
%~/ cat ~/bin/perlmod
perl -le'eval qq{require $ARGV[0]; }
? print ( "Found $ARGV[0] Version: ", eval "$ARGV[0]->VERSION" )
: print "Not installed" ' $1
работает достаточно хорошо.
Здесь может быть самый простой и самый «современный» подход, использующий Module::Runtime
:
perl -MModule::Runtime=use_module -E '
say "$ARGV[0] ", use_module($ARGV[0])->VERSION' DBI
Это даст полезную ошибку, если модуль не установлен.
Использование -MModule::Runtime
требует его установки (это не основной модуль).