2016-03-08 7 views
-1

Я пытаюсь расширить путь относительно текущего каталога:Предпочтительный способ получения абсолютного пути относительного пути к текущей директории

use feature qw(say); 
use strict; 
use warnings; 

use Cwd; 
use File::Spec; 

my $fn = 'test/my_file'; 

say File::Spec->rel2abs($fn); 
say Cwd::abs_path($fn); 

Здесь Cwd::abs_path() терпит неудачу, если каталог test не существует.

Почему File::Spec->rel2abs() работает нормально, а Cwd::abs_path() не удается?

Документация двух модулей Cwd и File::Spec дает мало подсказки, почему это происходит. Согласно следующему сообщению об ошибке, что может быть связано с расширением символических ссылок, первый с 2004 года: "Cwd::abs_path returns undef for non-existent paths":

ответ

2

File :: Spec и дружелюбнее Path :: Class не прикасайтесь к файловой системе, поэтому их можно использовать для создаваемого вами пути. Cwd::abs_path, поэтому его можно использовать для возврата допустимых путей. Используйте то, что наиболее подходит.

+0

Спасибо за ссылку на «Путь :: Класс»! –

Смежные вопросы