Какой модуль (модули) Perl я использую для получения полного пути (включая имя файла) от относительного в Windows?

Одна опция состоит в том, чтобы оставить файлы символов, где они ( т.е. в выходной папке сборки ) и затем используют параметр командной строки-y WinDbg для определения местоположения этих файлов. Используя этот подход должен гарантировать, что файлы символов всегда быть актуальными.

От Microsoft Help:

-y SymbolPath 
Specifies the symbol search path. Separate multiple paths with a 
semicolon (;). If the path contains spaces, it should be enclosed 
in quotation marks. For details, and for other ways to change this 
path, see Symbol Path. 
6
задан romandas 6 October 2009 в 19:36
поделиться

4 ответа

Я использую rel2abs из File :: Spec . Однако вы должны быть осторожны: это может вызвать getdcwd из Cwd и будет предполагать, что вам нужен текущий рабочий каталог для текущего диска. Если файл находится на другом диске, вам придется исправить это самостоятельно или указать второй аргумент для установки базового пути.

13
ответ дан 8 December 2019 в 16:05
поделиться

Я использую abs_path Cwd, а затем использую регулярное выражение для преобразования косой черты, когда мне действительно это нужно. Но я обнаружил, что в большинстве случаев косые черты в стиле Unix работают нормально. Только изредка «передать имя файла этой досадно ограниченной программе» мне приходится преобразовывать косые черты.

use Cwd 'abs_path';
my $path = abs_path($rel_path);

# and only if necessary...
$path =~ s'[/\\]+'\\'g;  # use Windows-style slashes
$path =~ s'^\\'\\\\';    # handle network path

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

-1
ответ дан 8 December 2019 в 16:05
поделиться
use File::Spec::Functions qw(rel2abs);
print rel2abs($ARGV[0]), "\n";
4
ответ дан 8 December 2019 в 16:05
поделиться
my($foo) = abs_path($some_file);
$foo =~ s{/}{\\}g;

print "FOO: $foo\n";
-1
ответ дан 8 December 2019 в 16:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: