PDA

Показать полную графическую версию : Помогите найти ошибку в трёх строках (perl)


Guest
29-06-2004, 21:06
Только что засел за perl, никак не пойму, что не так в следующем коде:

#!/usr/bin/perl -w

use strict;

my $str1 = "Строка 1\n";
my $str2 = "старое значение\n";

print $str1, $str2;

$str2 = "новое значение";

print $str2;

Новое значение, не выводится! И вообще, программа как будто заканчивает работу после (или перед) присваиванием нового значения. Знаю, что ошибка глупая, но не вижу её. Помогите, пожалуйста.

FADE
29-06-2004, 21:58
может потому что переменная должна быть строго латинского регистра - без цифр?

DAnG
29-06-2004, 22:15
возможно, стоит попробовать

$str2 = "новое значение\n";

nogod
30-06-2004, 00:28
у меня работает.
может  некорректно работает сам интерпретатор.
никаких синтаксических/логических ошибок нет.

mar
30-06-2004, 00:53
Может быть все дело в разных интрепритаторах и (может быть) в строчке use strict;?
Еще можно попробовать:
#!/usr/bin/perl -w
use strict;
#сначала объявляем
my $str1;
my $str2;
# а потом присваиваем что хотим
$str1= "string 1\n";
$str2 = "old value\n";
print $str1, $str2;
$str2 = "new value\n";
print $str2;
А какая у Вас система и Perl, Guest?


Исправлено: mar, 0:59 30-06-2004

Guest
30-06-2004, 07:53
DAnG
Я сильно удивлён, но "Новое значение\n" выводится. Но мне не нужен конец строки в str2.

mar
Slackware 9.1, perl 5.8.0
Я пробовал сначала объявлять, а потом присваивать - то же самое.
Но я обнаружил ещё один момент: вместо строки $str2 использовал целое число. Точно так же менял его значение (10 на 9) и опять не выводится!
Вот это не работает: print $i А вот так всё нормально: print $i, $str1; :confused:

FADE
30-06-2004, 10:01
потомучто точки с запятой нет.

echo $i;

Добавлено:

print $i;
т.е......

DAnG
30-06-2004, 11:15
Slackware 9.1 - не пробовал, но возможно, шелл затирает последнюю строку после завершения программы

последней строкой программы сделайте грубый ВК :)
print "\n";

Guest
30-06-2004, 12:29
DAnG
Видимо как раз так и обстоит дело с zsh, т.к. попробовал запустить то же самое, сменив оболочку на bash, и всё заработало. Спасибо за помощь.

mar
30-06-2004, 12:57
Guest
тебе и DAnG спасибо, мне в голову не приходило - всегда пользуюсь bash :)




© OSzone.net 2001-2012