Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Exec() и русские буквы/пробелы в пути 
:(
    Опции темы
Suppir
Дата 9.6.2011, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



пытаюсь с помощью exec() запустить файл, но этот файл запускается только в том случае, если путь в нему не содержит пробелов или русских букв. Как можно обойти? (под windows)

Добавлено через 1 минуту и 45 секунд
Как можно из нашего скрипта запустить другой perl-скрипт, если известен его адрес (содержащий пробелы) ?
PM MAIL   Вверх
arto
Дата 9.6.2011, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



# cat > "aa bb pl"
#! /usr/bin/perl

print "DONE\n";
# chmod +x "aa bb pl"
# ./"aa bb pl"
DONE
# perl -le 'exec "./aa\\ bb\\ pl";'
DONE
#
PM MAIL ICQ   Вверх
Suppir
Дата 10.6.2011, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



ничего не понял smile
PM MAIL   Вверх
alezzz
Дата 10.6.2011, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 1
Всего: 14



есть папка, которая называется "папка папка", в ней лежит test.pl:
Код

print "test\ntest\n";


есть run.pl:
Код

exec('perl "d:\\папка папка\\test.pl"');

в run.pl кирилица в кодировке cp-1251.

все работает.

Код

D:\>dir
 Том в устройстве D имеет метку Work
 Серийный номер тома: D854-34E8

 Содержимое папки D:\


<лишнее вырезал>

10.06.2011  08:53    <DIR>          папка папка
               1 файлов             40 байт
              11 папок     526 979 072 байт свободно

D:\>perl run.pl

D:\>test
test

D:\>

PM MAIL   Вверх
Сумасшедший
Дата 10.6.2011, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чилавек-Каропка
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 15.8.2004
Где: Москва

Репутация: 1
Всего: 107



Т.е имя файла в кавычки возьмите и в 1251 пишите кириллицу к скриптах.


--------------------
Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас!
PM MAIL WWW Jabber   Вверх
Suppir
Дата 10.6.2011, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



alezzz, а если имя файла в переменной?
PM MAIL   Вверх
alezzz
Дата 10.6.2011, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 1
Всего: 14



Код

$a = 'd:\папка папка\test.pl';
system("perl \"$a\"");


Вот почему так делается:
Код

D:\>cd папка пака
Системе не удается найти указанный путь.

D:\>cd "папка папка"

D:\папка папка>


Это в ХР,  в семерке перешло в папку без кавычек, но перл с семеркой не согласен.

exec заменил на system, после выполнения exec ждал нажатия клавиши.
PM MAIL   Вверх
Suppir
Дата 13.6.2011, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Последний вариант Alezzz'a работает, т.е. скрипт запускается, но при этом не получается запустить его с параметрами.
PM MAIL   Вверх
alezzz
Дата 13.6.2011, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 1
Всего: 14



Точно также и с параметрами:
run.pl
Код

$a = 'd:\папка папка\test.pl';
system("perl \"$a\" \"1 2\" 3");

test.pl в "папка папка"
Код

print "$_\n" foreach(@ARGV);


Код

D:\>perl run.pl
1 2
3


Два параметра, "1 2" и "3", первый параметр с пробелом, поэтому его в кавычки, второй необязательно (в данном случае)


PM MAIL   Вверх
Suppir
Дата 14.6.2011, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



alezzz, в Windows 7 дочерний скрипт запускается, но при этом интерпретатор ругается. 
PM MAIL   Вверх
alezzz
Дата 14.6.2011, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 1
Всего: 14



как именно ругается? я показал свой вывод, у меня все нормально.
PM MAIL   Вверх
Suppir
Дата 14.6.2011, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Из дома еще раз гляну, чуть позже отпишусь...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0854 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.