Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Перл, первый скрипт


Автор: hotdap 6.5.2006, 17:22
Уважаемые ассы интренет программирования! Не сочтите мой вопрос банальным. Я только начал изучение Perl, до этого программированием не занимался вообще. И сразу первый вопрос:
Набираю код:

#!\local\perl\bin\
print "Введите имя:\n";
$a = <STDIN>;
print "$a";


Я так думаю, когда я запускаю этот скрипт прграмма просит ввести имя, после моего ввода с клавиатуры, она его повторит. 
Но у меня ничего не получилось: Запускаю скрипт, выводится предложение ввести имя, я ввожу имя, нажимаю enter и все, повторение имени скрипт не выводит.
Подскажите, пожалуйста в чем причина?  

Автор: Wowa 6.5.2006, 21:06
Я попробуй написать: print "test";
Отобразит? 

Автор: shootnix 6.5.2006, 22:05
гы, она просто выводит и завершает работу. всё происходит довольно быстро, мало кто успевает разобрать smile)) нужно программу задержать smile попробуй так:

Код

#!\local\perl\bin\
print "Введите имя:\n";
$a = <STDIN>;
print "$a";
$a = <STDIN>;


Программа будет ждать теперь очередного ввода и не закроется, пока не нажмёшь enter 

Автор: Wowa 6.5.2006, 22:16
ну, в консоли ведь все равно должно быть видно. 
У меня есть подозрение, что программа умирает из-за отсутствия выдачи "Content-type". 

Автор: hotdap 6.5.2006, 22:38
Wowa, print "test", попробовал. Все нормально. Выпечатывает test
shootnix, попробовал задержать, тоже  не помогает 
Вот что у меня получилось. учитывая ваши советы:
Код

#!\local\perl\bin\
print "Content-type: text/html\n\n";
print "Введите имя?\n";
$a=<STDIN>;
print "<html><h1>$a</h1></html>\n";
$a=<STDIN>;


Все равно ничего не получается. Может у меня что с наcтройкой программы не правильно. Я пытаюсь работать в DZsoft Perl Editor 5.1  

Автор: Wowa 6.5.2006, 22:40
Хм. А ошибку 500 не выдает? Нет возможности посмотреть лог ? 

Автор: hotdap 6.5.2006, 22:55
Ошибку не выдает.
Мне кажется программа не видит команды $a=<STDIN>;, потому что если я делаю такой код:
Код

#!\local\perl\bin\
print "Content-type: text/html\n\n";
print "Введите имя?\n";
$a=<STDIN>;
print "<html><h1>test</h1></html>\n";
$a=<STDIN>;


то есть заменю пременную а на тест, то программа пролетает строку $a=<STDIN>; и сразу выпечатывает:
Ваше имя?
<html><h1>test</h1></html>

не дожидаясь пока я введу что либо с клавиатуры.  

Автор: Wowa 6.5.2006, 22:58
убери весь хтмл и print "Content-type: text/html\n\n";

Ты ведь не в браузере работаешь, а если в браузере - то браузер, это не консоль. Поэтому у тебя STDIN ничего и нет.

Добавлено @ 22:59 
Вот, например, рабочий пример:
Код

#!/usr/local/bin/perl -w

print "Name : ";
$name = <STDIN>;
chop($name);
printf("Hallo, %s !\n",$name);

но запускать в консоли! 

Автор: hotdap 6.5.2006, 23:12
Запустил я Ваш код в консоли. После обработки кода программа выдала сообщение одной строкой:
Name : Hallo,  !  , опять же не дожидаясь ввода переменной.

Я уже наверное замучил своими делетантскими вопросами, но как говориться у Вас в подписи:
"Только действия приближают Ваш успех! Только работая Вы добьетесь намеченного!"
 

Автор: nitr 6.5.2006, 23:36
smile
Код
#!perl
print "Input yor name: ";    
$a= <STDIN>;
print "Your name is $a";


Цитата
D:\_\111>1.pl
Input yor name: ffff
Your name is ffff


Добавлено @ 23:40 
Да! и если ты хочешь скрипт CGI... то <STDIN> зачем используешь smile) ? передавай параметром smile
благо литературы полно... ссылки http://forum.vingrad.ru/index.php?showtopic=1167&view=findpost&p=5404

Добавлено @ 23:43 
для начала всё же стоит прочесть лит-ру по программированию PERL... и скрипт свой первый легче будет написать...
Perl - это не только веб-программирование. Если всё же у тебя вопрос по CGI, то он не в тот раздел задан ;) Это к слову 

Автор: sharq 7.5.2006, 13:47
hotdap
Цитата(hotdap @  6.5.2006,  18:22 Найти цитируемый пост)
#!\local\perl\bin\

хитрый у тебя путь к perl  smile 


Цитата(hotdap @  6.5.2006,  18:22 Найти цитируемый пост)
#!\local\perl\bin\
print "Введите имя:\n";
$a = <STDIN>;
print "$a";


Вот вариант:
Код

#!\local\perl\bin
print "Enter name:\n";
chomp($a = <>);
print "Name is $a\n";


Если не сработает, то приведи листинг работы скрипта.

 smile

Добавлено @ 13:51 
Запускать perl название_скрипта.pl (это на всякий случай)
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)