В этой заметке будет показано как исправить ошибки, возникающие при работе скрипта Perl, который в качестве базы данных использует файл CSV.
Причём у данной проблемы могут быть два варианта:
- Can't locate DBD/CSV.pm in @INC
- Can't locate Text/CSV.pm in @INC
В обоих случаях скрипт не может найти файл CSV.pm и при беглом взгляде может показаться, что это одна и та же проблема. Но на самом деле это две разные ошибки и для их решения требуется установить два разных модуля Perl.
Can't locate DBD/CSV.pm in @INC
Если при запуске программы, написанной на PERL вы сталкиваетесь с ошибкой вроде такой:
install_driver(CSV) failed: Can't locate DBD/CSV.pm in @INC (you may need to install the DBD::CSV module) (@INC contains: /usr/lib/perl5/5.30/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/5.30/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/5.30/core_perl /usr/share/perl5/core_perl) at (eval 15) line 3. Perhaps the DBD::CSV perl module hasn't been fully installed, or perhaps the capitalisation of 'CSV' isn't right. Available drivers: DBM, ExampleP, File, Gofer, Mem, Proxy, SQLite, Sponge. at /usr/bin/parallel line 11496.
То она означает, что отсутствует библиотека (драйвер), который позволяет скриптам Perl работать файлами в формате CSV (в таких файлах данные разделены друг от друга запятыми и размещены в виде таблицы).
Для того, чтобы Perl смог работать с файлами .csv как с базой данных, нужно установить дополнительную библиотеку.
В приведённой выше ошибке дана подсказка — возможно нужно установить модуль DBD::CSV, именно это мы и сделаем.
Обратите внимание, что нужные пакеты можно установить из самого Perl, либо из репозитория дистрибутива. Там где доступно, мы будем устанавливать из репозитория дистрибутива.
Для систем основанных на Debian/Ubuntu:
Выполните установку DBD::CSV из репозитория дистрибутива:
sudo apt install libdbd-csv-perl
Для систем основанных на Arch Linux:
Для Arch Linux я не смог найти DBD::CSV в стандартном репозитории, поэтому установим в самом Perl:
sudo perl -MCPAN -e'install DBD::CSV'
Для систем на основе RedHat/Centos/Fedora:
Установите DBD::CSV (возможно, данный пакет присутствует в стандартном репозитории, если вы это знаете, то напишите, пожалуйста, в комментарии):
sudo perl -MCPAN -e'install DBD::CSV'
Can't locate Text/CSV.pm in @INC
А это другой вариант похожей проблемы. Обратите внимание, что перед CSV.pm идёт слово Text. Пример ошибки:
Can't locate Text/CSV.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.16.2/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.16.2 /usr/lib/perl5/vendor_perl/5.16.2/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.16.2 /usr/lib/perl5/5.16.2/x86_64-linux-thread-multi /usr/lib/perl5/5.16.2 /usr/lib/perl5/site_perl/5.16.2/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.16.2 /usr/lib/perl5/site_perl .) at ./OracleScript.pl line 4. BEGIN failed--compilation aborted at ./OracleScript.pl line 4.
Для систем основанных на Debian/Ubuntu:
Установите библиотеку libtext-csv-perl:
sudo apt install libtext-csv-perl
Для систем основанных на Arch Linux:
Здесь этот пакет называется perl-text-csv:
sudo pacman -S perl-text-csv
Для систем на основе RedHat/Centos/Fedora:
Установите пакет perl-Text-CSV:
sudo yum install perl-Text-CSV
Связанные статьи:
- Ошибки git «Your local changes to the following files would be overwritten by merge» и «Please commit your changes or stash them before you merge» (РЕШЕНО) (53.6%)
- Как установить конкретную версию Ruby gem? (53.6%)
- PostgreSQL в Linux: рецепты популярных действий и решения проблем (53.6%)
- Ошибка «remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead» (РЕШЕНО) (53.6%)
- Как запустить программу из Python: как выполнить системную команду или другой скрипт Python (полное руководство) (53.6%)
- Warning: apt-key is deprecated (РЕШЕНО) (RANDOM - 3.6%)