|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Yuriy Kaminskiy 2:5020/517.21 08 May 2001 16:35:49 To : Anatoly Moskovsky Subject : Re: Поиск файла в PATH --------------------------------------------------------------------------------
Hello, Anatoly!
>>>>> On 11:42 07/5/2001, avm@trais.com.ua writes:
AM> Hе слабо, просто не люблю делать то что уже много раз делано
AM> другими и натыкаться на уже пройденные ошибки (см. ниже)
>> #!/usr/bin/perl -w use strict; my $fname = 'perl';
>> for my $dir (split/:/, $ENV{PATH}) { print "$dir/$fname\n" if (-x
>> "$dir/$fname"); }
AM> В некоторых ОС символ ":" встречается в пути, и поэтому
AM> разделитель в PATH - ";"
perldoc Config на предмет path_sep.
Исправленный переносимый вариант:
use Config;
for my $dir (($^O =~ /WIN|OS2/i ? "." : ()),
split /\Q$Config{'path_sep'}/,$ENV{'PATH'},-1) {
# Пустой элемент в PATH эквивалентен "."
my $fn = $dir eq "" ? $fname : "$dir/$fname";
print "$fn\n" if -x $fn and -f _;
}
--
Yuriy Kaminskiy.
PS BTW, с использованием use 5.6.0; use Env qw/@PATH/ все выглядит
проще, но в perl-5.6.0 он неправильно понимает результат
export PATH="$PATH:" (игнорирует последний пустой элемент; т.к. он
пользуется split $sep,$ENV{...} вместо split $sep,$ENV{...},-1;
см. perlfunc -f split).
--- Gnus v5.2.25/XEmacs 19.14
* Origin: none (2:5020/517.21@fidonet)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/17427f17a74f3.html, оценка из 5, голосов 10
|