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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод ошибки при запуске программы 
:(
    Опции темы
Slauta
Дата 30.6.2009, 10:47 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


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

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



Вот вопрос. Что может выдавать ошибку 'Terminating on signal SIGINT(2)' при выполнении скрипта:
Код

#!/usr/local/bin/perl
print "Заполните массив...\n";
@massiv = <STDIN>;
print "Введите № строки (от 0): ";
chomp ($stroka = <STDIN>);
print "---------------\n";
print "Число находящаеся на строке №$stroka является - $massiv[$stroka].";

После ввода в @massiv, нажимаю Win+S (По другому никак), открывается браузер а perl выводит ошибку 'Terminating on signal SIGINT(2)'

Точно так же и здесь:
Код

#!/usr/local/bin/perl
print "Введите данные в массив...\n";
@list = <STDIN>;
$reverselist = reverse @list;
print $reverselist;


Я вот подумал, мот это где то в настройках интерпретатора perl?




P.S. Спасибо за уделённое время.
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
FishHunter
Дата 30.6.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



таки а до каких пор то вводить элементы массива?
правильно тебе пишет INT -  сигнал о нажатии клавиши прерывания на компе.
сделай чтобы сначала вводилось число элементов массива, а потом в цикле от 1 до этого числа каждый элемент
(токо не забудь что первый элемент массива имеет индекс 0)

Это сообщение отредактировал(а) FishHunter - 30.6.2009, 11:27
PM MAIL   Вверх
Slauta
Дата 30.6.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


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

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



Цитата(FishHunter @  30.6.2009,  11:25 Найти цитируемый пост)
сделай чтобы сначала вводилось число элементов массива, а потом в цикле от 1 до этого числа каждый элемент

чет немного не догнал,  если посмотреть на второй мой выложеный пример, там всё точна по условию, и она далжна полюбэ наверн работать, но, прога (reverse) поменяв местами первую строку выдает ошибку:

Цитата(Slauta @  30.6.2009,  10:47 Найти цитируемый пост)
'Terminating on signal SIGINT(2)

а поменяв 2 строку прекращается работа программы. 

можно какой нить пример?

Это сообщение отредактировал(а) Slauta - 30.6.2009, 14:20
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
amg
Дата 30.6.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Slauta @  30.6.2009,  14:12 Найти цитируемый пост)
если посмотреть на второй мой выложеный пример, там всё точна по условию, и она далжна полюбэ наверн работать
Slauta, вдумайтесь все же в то, что сказал FishHunter и воспользуйтесь его советом. Или можно так:
Код
print "Введите элементы массива через ; ...\n";
@list = split /;/, <STDIN>;
print "@list\n";

PM MAIL   Вверх
Slauta
Дата 30.6.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


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

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



Цитата(amg @ 30.6.2009,  14:32)
Цитата(Slauta @  30.6.2009,  14:12 Найти цитируемый пост)
если посмотреть на второй мой выложеный пример, там всё точна по условию, и она далжна полюбэ наверн работать
Slauta, вдумайтесь все же в то, что сказал FishHunter и воспользуйтесь его советом. Или можно так:
Код
print "Введите элементы массива через ; ...\n";
@list = split /;/, <STDIN>;
print "@list\n";

ну с этим понятно...

Я ючусь по книжке, там написан ответ так (второго моего примера)....
Код

print "Введите данные в массив...\n";
@list = <STDIN>;
$reverselist = reverse @list;
print $reverselist;

тютелька в тютельку, но выдаёт ошибку.... Че за хрень???
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
DaemonSuw
Дата 30.6.2009, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



'Terminating on signal SIGINT(2) - это сигнал посланный вашему приложения вами с клавиатуры... это не ошибка нажмите ctrl+c увидите тоже самое,
можно сделать цикл и проверять ввод

while (<STDIN>)
{
....
last if $_ =~ /__end__/;
}

или можно попробывать обрабатывать сигнал...

Это сообщение отредактировал(а) DaemonSuw - 30.6.2009, 20:28
PM MAIL ICQ   Вверх
Slauta
Дата 1.7.2009, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


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

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



А каким тогда нажатием (если не win+s) инецеировать (на винде 7) конец ввода массива с  <STDIT>?
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
amg
Дата 1.7.2009, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Slauta @  1.7.2009,  01:46 Найти цитируемый пост)
А каким тогда нажатием (если не win+s) инецеировать (на винде 7) конец ввода массива с  <STDIT>?
Ctrl Z

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


Оторванный от жизни
*


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

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



Ctrl+Z у мя не работает!
Блин, придется на переписывать под linux, и каждый раз в неё заходить!
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
korob2001
Дата 1.7.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Вообще лучше всего заполнять массив с клавиатуры в бесконечном цикле, при вводе определённой последовательности прерывать его, это как раз и привёлDaemonSuw.
Можно так же перехватить сигнал INT, вот небольшой пример:
Код

#!/usr/bin/perl -w
use strict;
my $count = 0;

# Перехватываем сигнал INT
$SIG{INT} = sub {
    # Делаем, что-то если получили сигнал INT, в данном случае выводим строку и завершаем выполнение программы
    print "Bye, bye...\n";
    exit(0);
};

# Запускаем бесконечный цикл
while (1) {
    print ++$count . "\n";
}



--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Slauta
  Дата 1.7.2009, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


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

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



Я не продвинутый программист, я тока учюсь... Этот код я мало понимаю, хоть он и маленький, и описан подробна... У меня проблема другая... В книжке вроде ошибок недолжно быть, однако некоторые скрипты не работают. Это сильно тормозит меня, вот приходится спрашивать на форумах и знающих людей.. :(
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
DaemonSuw
Дата 1.7.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Slauta, мы все учимся)...

Суть обработки сигналов - сделать что то до завершения скрипта/получению сигнала... 
Например если вы просто отправите скрипту (допустим вашему) - то он просто завершиться и 
Код

$reverselist = reverse @list;
print $reverselist;

не выполниться...
а если тоже самое сделаете с скриптом korob2001, то получите Bye, bye...
тоесть если вы засуните в 
Код

$SIG{INT} = sub {
  # что вам надо
};


То это обязательно выполниться перед заершением... если только не послать -kill


Это сообщение отредактировал(а) DaemonSuw - 1.7.2009, 23:12
PM MAIL ICQ   Вверх
Slauta
Дата 2.7.2009, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


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

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



А чё значит kill? Убойное завершение скрипта или просто ибит скрипт?
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
amg
Дата 2.7.2009, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Slauta @  1.7.2009,  11:30 Найти цитируемый пост)
Ctrl+Z у мя не работает!
Забыл добавить: Enter, Ctrl+Z и затем еще Enter. Пробовал на WinXP.

PM MAIL   Вверх
Slauta
Дата 2.7.2009, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


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

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



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


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

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


 




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


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

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