Как мне вернуть абсолютные пути к файлам с помощью Perl glob?

У меня есть код Perl, в котором есть операция файлового глобуса.

$file1 = @ARGV[0];
@res1 = glob "$file1*";

Я хочу, чтобы при глобализации файлов отображались все абсолютные пути, а не только имена файлов, которые сейчас используются в моем коде.

например когда я делаю glob «* .pdf», мне нужно, чтобы абсолютные пути к файлам pdf были сопоставлены и возвращены в мою переменную массива с помощью glob.

Я пробовал использовать модуль use File :: Basename; но, похоже, это используется для разбора пути к файлу в каталог, имя файла, суффикс.

Как мне получить такой эффект.

Благодарность,

-AD.


person goldenmean    schedule 22.02.2011    source источник


Ответы (2)


Вы хотите использовать основной модуль Cwd, чтобы получить полный путь к вашему текущему рабочему каталогу.

use Cwd;
@res1 = map { Cwd::abs_path($_) } glob "$file1*";
person mob    schedule 22.02.2011
comment
Спасибо за ответ. работал хорошо, также я узнал о модуле Cwd. - person goldenmean; 23.02.2011
comment
что тут выбирать между этим и File :: Spec rel2abs () - person justintime; 23.02.2011

Вы хотите использовать стандартный модуль File::Spec. У него есть подпрограмма rel2abs(), которая вам и нужна. Подробнее см. perldoc File::Spec. Также см. perldoc perlmodlib для получения списка стандартных модулей и практических рекомендаций, которые устанавливаются вместе с Perl.

person shawnhcorey    schedule 22.02.2011