Показать полную графическую версию : Помогите найти ошибку в трёх строках (perl)
Только что засел за perl, никак не пойму, что не так в следующем коде:
#!/usr/bin/perl -w
use strict;
my $str1 = "Строка 1\n";
my $str2 = "старое значение\n";
print $str1, $str2;
$str2 = "новое значение";
print $str2;
Новое значение, не выводится! И вообще, программа как будто заканчивает работу после (или перед) присваиванием нового значения. Знаю, что ошибка глупая, но не вижу её. Помогите, пожалуйста.
может потому что переменная должна быть строго латинского регистра - без цифр?
возможно, стоит попробовать
$str2 = "новое значение\n";
у меня работает.
может некорректно работает сам интерпретатор.
никаких синтаксических/логических ошибок нет.
Может быть все дело в разных интрепритаторах и (может быть) в строчке 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
DAnG
Я сильно удивлён, но "Новое значение\n" выводится. Но мне не нужен конец строки в str2.
mar
Slackware 9.1, perl 5.8.0
Я пробовал сначала объявлять, а потом присваивать - то же самое.
Но я обнаружил ещё один момент: вместо строки $str2 использовал целое число. Точно так же менял его значение (10 на 9) и опять не выводится!
Вот это не работает: print $i А вот так всё нормально: print $i, $str1; :confused:
потомучто точки с запятой нет.
echo $i;
Добавлено:
print $i;
т.е......
Slackware 9.1 - не пробовал, но возможно, шелл затирает последнюю строку после завершения программы
последней строкой программы сделайте грубый ВК :)
print "\n";
DAnG
Видимо как раз так и обстоит дело с zsh, т.к. попробовал запустить то же самое, сменив оболочку на bash, и всё заработало. Спасибо за помощь.
Guest
тебе и DAnG спасибо, мне в голову не приходило - всегда пользуюсь bash :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.