Если вам нужен автономный скрипт, а не автономный двоичный файл (который является режимом по умолчанию для pp), добавьте параметр -P. Я бы посоветовал против этого, хотя. Это наименее проверенный режим работы.
Обратите внимание, что PAR :: Packer работает для глубоких зависимостей. Тема вашего вопроса немного претенциозна. Фактически, PAR :: Packer на самом деле не проверяет никаких зависимостей, а делегирует это Module :: ScanDeps. Теперь Module :: ScanDeps является эвристическим подходом к сканированию зависимостей, и его можно сломать, вызвав уродливую динамическую загрузку зависимостей. (т.е. генерирование имен модулей во время выполнения и затем их использование в eval).
Действительно, если вы посмотрите на источники для Log :: Any (который используется CHI :: Driver :: File), вы быстро увидите, что он использует динамическую загрузку модулей. Вот почему модуль :: Adapter :: Null не берется.
Как правило, мы исправляем эти проблемы, добавляя специальный модуль в Module :: ScanDeps для таких модулей, автор которых посчитал хорошей идеей победить любой статический анализ. Пока вы не получите фиксированную версию Module :: ScanDeps , вы можете использовать параметры -c или -x для pp, чтобы разрешение зависимости использовало компиляцию или выполнение программы вместо того, чтобы полагаться только на статический анализ. Расширенный модуль Module :: ScanDeps имеет версию 0.95 и должен быть доступен из CPAN в течение дня.