Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Помогите найти ошибку в трёх строках (perl) (http://forum.oszone.net/showthread.php?t=31122)

Guest 29-06-2004 21:06 213403

Только что засел за 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 213404

может потому что переменная должна быть строго латинского регистра - без цифр?

DAnG 29-06-2004 22:15 213405

возможно, стоит попробовать
Код:


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


nogod 30-06-2004 00:28 213406

у меня работает.
может  некорректно работает сам интерпретатор.
никаких синтаксических/логических ошибок нет.

mar 30-06-2004 00:53 213407

Может быть все дело в разных интрепритаторах и (может быть) в строчке
Код:

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?


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

Guest 30-06-2004 07:53 213408

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 213409

потомучто точки с запятой нет.

echo $i;

Добавлено:

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

DAnG 30-06-2004 11:15 213410

Slackware 9.1 - не пробовал, но возможно, шелл затирает последнюю строку после завершения программы

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

Guest 30-06-2004 12:29 213411

DAnG
Видимо как раз так и обстоит дело с zsh, т.к. попробовал запустить то же самое, сменив оболочку на bash, и всё заработало. Спасибо за помощь.


mar 30-06-2004 12:57 213412

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




Время: 15:15.

Время: 15:15.
© OSzone.net 2001-