Wednesday, September 14, 2011

Как найти путь к Perl-модулю по имени

Одно из основных преимуществ Perl перед тем же Python - наличие 100500 качественных модулей на CPAN, готовых к включению в любой проект.

Естественно, иногда бывает необходимо посмотреть код модуля. А для этого потребуется путь к нему в файловой системе. Рассмотрим несколько подходов к этой проблеме.

  • %INC, @INC

  • Самый простой способ - спросить у Perl :) Пути к модулям, подгруженным с помощью do, require и use можно найти в хэше %INC. Ключами хэша являются имена модулей, преобразованные в относительный путь, а значениями соответственно полные пути к модулям. Например, чтобы вывести путь к модулю Encode можно использовать следующий one-liner:
    $ perl -E 'use Encode; say $INC{"Encode.pm"}'


    Если модуль по каким-то причинам не компилируется, в %INC он не заносится. Поэтому, более универсальным решением будет использовать @INC, проверяя наличие модуля в каждой папке. Для удобства можно написать функцию bash:
    get_path() {
    path="${1//:://}.pm"
    location=""
    for dir in $(perl -e 'print "@INC"'); do
    if [ -r "$dir/$path" ]; then
    location="$dir/$path"
    break
    fi
    done
    echo $location
    }

  • perldoc


  • Во многих случаях для нахождения пути к модулю или бинарнику можно использовать perldoc -l Modname или perldoc -lm Modname

    • perldoc -l ищет не только в @INC, но и в $PATH. Если в файле нет POD-документации, путь не выводится.


    • perldoc -lm ищет только в @INC, но выводит путь даже если в файле нет POD-документации.



  • module_info

  • Также можно использовать тулзу module_info, которая идет с модулем Module::Info:

    $ module_info CGI::FormBuilder

    Name: CGI::FormBuilder
    Version: 3.0501
    Directory: /usr/local/lib/perl5/site_perl/5.14.1
    File: /usr/local/lib/perl5/site_perl/5.14.1/CGI/FormBuilder.pm
    Core module: no

Wednesday, September 7, 2011

Заметки по установке Arch Linux

Начнем знакомство с Arch Linux. И начнем его, конечно, с установки :)
Надо сказать, что Arch Linux имеет отличную wiki. Здесь очень подробно и доступно описаны установка системы, Xorg и т.д. - просто пользуемся поиском. Ну и несколько советов от меня:

  • Для установки удобно использовать флэшку, на которую записан netinstall-образ. Записать образ можно простой командой dd if=archlinux.iso of=/dev/sd[x].

  • При использовании в процессе установки беспроводного соединения потребуется сконфигурить его вручную (что также документировано). Для простоты можно использовать сетевой кабель и DHCP.

  • На этапе установки лучше выбирать минимум пакетов, групп base и base-devel достаточно. (Иначе тупо качаться долго будет).

  • Хорошим способом документирования своих действий будет сохранение всех изменений конфигов в системе контроля версий. (Кое-какие идеи по этому поводу можно почерпнуть здесь).

  • Многие полезные приложения, модули Perl, etc. содержатся в пользовательском репозитории (AUR). Для работы с ним желательно установить какой-нибудь из менеджеров. Лично мне приглянулся yaourt, т.к. он прозрачно интегрируется с родным pacman и довольно удобен.