Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите новичку  (Прочитано 7203 раз)
0 Пользователей и 1 Гость смотрят эту тему.
paramon
Гость
« : 08-03-2010 21:01 » 

Прошу помочь.
Совсем недавно приступил к изучению perl.
использую среду разработки perl express
Вопрос первый как ввести в переменную значение из входного потока
$n = <STDIN>;
никакого приглашения для ввода не появляется.
Вопрос второй - Не работает функция getppid
$pid = getppid();
пишет getppid is unimplemented;
может что подключить надо, вроде функция стандартная.
  Скромно так...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 09-03-2010 04:46 » 

Вопрос первый как ввести в переменную значение из входного потока
$n = <STDIN>;
никакого приглашения для ввода не появляется.

Тоскуем по бейсику? Ага
Само ничего не происходит. Нужено приглашение - выведи его.

Код:
print "input>";
$n = <>;

Жесткой типизации у скаляров нет. Т.ч. если ожидаешь здесь ввод целого, то после ввода надо сделать проверку на соответствие формату.

Код:
while (1)
{
  print "input>";
  $n = <>;
  last if $n =~ m/^\d+$/;
}

Другой вариант - попытаться привести к нужному типу. Т.е. без контроля ввода.

Код:
print "input>";
$n = <>;
$n += 0;

Вопрос второй - Не работает функция getppid
$pid = getppid();
пишет getppid is unimplemented;
может что подключить надо, вроде функция стандартная.

Функция встроенная. Подключать ничего не надо.
Вероятно ты программу запускаешь из под винды - для нее *nix функции не реализованы или не работают.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
paramon
Гость
« Ответ #2 : 09-03-2010 16:12 » 

да, RXL , спасибо. под linux getppid() заработала.
что касается <>, то спрашивал немного о другом.
просто не знал куда именно вводить: в настройках perl express можно
сделать так, что появится строка интерактивного ввода. Улыбаюсь
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 09-03-2010 17:43 » 

paramon, см. документацию. Оператор <HANDLER> (сокращенный вариант - "<>" - равен "<STDIN>") полностью соответствует функции readline(HANDLER). Приглашение она не поддерживает, т.к. рассчитана не только на терминал, а на любой дескриптор (файл, сокет и т.д.). То, что ты видел, вероятно следствие включенной отладки.

Кстати, классикой Perl для винды является ActivePerl.

Рекомендую отличную книгу: Программирование на Perl. Я ее всем рекомендую, все зависимости от уровня знаний.
Скачать можно у нас: https://club.shelek.ru/viewfiles.php?id=19
Это скан. Качественный перевод. 1150 страниц про все. Если будешь заниматься Perl-ом, то рекомендую приобрести - с бумагой удобнее работать, чем со сканами.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines