9°C
завтра: 12°C
Погода в Перми
9°C
утром11°C
днем17°C
завтра12°C
Подробно
 92,01
−0.1180
Курс USD ЦБ РФна 27 апреля
92,0134
−0.1180
 98,72
+0.0108
Курс EUR ЦБ РФна 27 апреля
98,7187
+0.0108
  • Доброго времени суток всем!
    Возникла небольшая проблема в приложении под windows. Привожу отдельно неработающий кусок:

    use Tk;
    $main = MainWindow -> new();
    $main -> Button (-text => "ClustalW2", -command => \&Clust) -> pack();
    MainLoop();

    sub Clust()
    {
    system('cd путь_к_программе & cама_программа.exe');
    }

    Работает без проблем, если так:

    Clust();

    sub Clust()
    {
    system('cd путь_к_программе & cама_программа.exe');
    }

    В linux подобной проблемы не возникало и всё отлично работало :а\?:
    Может кто подсказать, в чём проблема?

  • Подумайте еще раз, что происходит при вызове system.
    Намекаю, загружается шелл пользователя, и ему передается строка команды для выполнения. Шелл cmd и bash/sh - разный шелл ))) Cmd может не понять конструкцию вида cd ../aa && ./aa.exe =)

    Non solum oportet, sed etiam necessese est

  • Дело в том, что конструкцию вида cd ../aa & ./aa.exe он как раз понимает и запускает, если её вызывает просто в программе.
    А вот в виде
    $main -> Button (-text => "ClustalW2", -command => \&Clust) -> pack();
    не может запустить нужный а.exe (как понимаю, он его не находит)
    даже если явно прописать
    $main -> Button (-text => "ClustalW2", -command => sub{system('cd путь_к_программе & cама_программа.exe');}) -> pack();
    Меняется только то, что я подключаю пользовательский интерфейс. :а\?:
    Не понимаю, почему не работает... может, perl другой скачать? о.О

  • Кстати да - что у вас за перл под виндовс?
    Кстати, вот это , в частности пример использования button читали?
    Посмотрите, ваша процедура-обработчик вообще вызывается? Попробуйте оттуда не просто делать system, а писать что-нибудь до вызова system и после в файл. может быть у вас обработчик вообще не вызывается, кстати.

    Non solum oportet, sed etiam necessese est

  • Сейчас стоит ActivePerl-5.8.8.819. Скачивается ActivePerl-5.10.1.1006

    Пробовала сделать так:
    sub Clust(){
    $status=system('cd C:\Program Files\ClustalW2 & clustalw2.exe');
    print $status;
    }
    возвращает 256 и что "ClustalW2" не является программой, а если просто
    sub Clust(){
    $status=system('cd C:\Program Files\ClustalW2');
    print $status;
    }
    возвращает 0

    Что самое непонятное, при вызове не из button - всё работает так, как нужно и возвращает 0 в обоих случаях.

    Извиняюсь, конечно, за этот бред... :смущ:ничего не понимаю) Сейчас ещё perl переставлю, может и заработает:улыб:

  • Спасибо, что откликнулись:улыб:Переустановила - всё заработало!

  • В ответ на: cd C:\Program Files\ClustalW2
    имя каталога у вас с пробелами. Экранируйте его, чтоли...
    и почему не использовать:
    chdir ("C:\Program Files\ClustalW2");
    system("./clustalw2.exe");
    зачем для смены рабочего каталога использовать system?

    Non solum oportet, sed etiam necessese est

Записей на странице:

Перейти в форум

Модератор: