Модуль File::Basename

В предыдущем примере базовое имя файла определялось способом, который не был портируемым. Мы показали, что даже тривиальное решение может быть подвержено неочевидным ошибочным предположениям (в данном случае предположение об отсутствии символов новой строки в именах файлов и каталогов). И вообще не стоило «изобретать велосипед заново», решая проблему, которая уже была многократно решена (и отлажена) до нас.

Итак, извлечь базовое имя из полного имени файла можно другим, более правильным способом. В поставку Perl включен модуль File::Base-name. О том, что он делает, можно узнать при помощи команды perldoc File::Basename или прочитать в документации к вашей системе. Это первый шаг по использованию нового модуля (а нередко также третий и пятый). Когда вы будете готовы использовать модуль в своей программе, объявите его директивой use в начале программы:

use File::Basename

В процессе компиляции Perl обнаруживает эту строку и загружает модуль. Теперь с точки зрения Perl все выглядит так, словно в программе появились новые функции, которые могут в ней использоваться. В нашем примере потребуется основная функция модуля basename:

my $name = "/usr/local/bin/perl";
my $basename = basename $name; # Получаем 'perl'

В UNIX такое решение работает.


А если программа будет запущена в MacPerl, в Windows, в VMS или в другой системе? Нет проблем – модуль определяет, на каком компьютере он выполняется, и использует стандартные правила для имен файлов этого компьютера. (Конечно, в переменной $name должно храниться значение, соответствующее файловой системе этого компьютера.) Модуль также предоставляет ряд сопутствующих функций. Одна из них – функция dirname – извлекает из полного имени часть с именем каталога. Модуль также позволяет отделить имя файла от расширения или изменить стандартный набор правил для имен файлов.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
CGI.pm
Базы данных и DBI
Использование отдельных функций модуля
Использование простых модулей
Модуль File::Spec

Вернуться в раздел: Perl / 10. Модули Perl