Forum Webscript.Ru

Программирование => Perl => Тема начата: Glader от 25 Марта 2003, 09:45:23

Название: Чудеса
Отправлено: Glader от 25 Марта 2003, 09:45:23
Снимите с ручника, плз. Что-то я совсем ничего не понимаю...

1 вариант
==============================
use strict

my $b = \'BBB\';
my $a = \'AAA\';

xyz($b, \'111\', $a);
xyz($b, $b, $a);
xyz($b, $a, $a);
xyz($b, $a, \'222\');

sub xyz{
   my ($_a, $_b, $_c) = @_;
   print "a = $_a, b = $_b, c = $_c.\\n";
}
==============================

Выдает
==============================
a = , b = 111, c = AAA.
a = , b = , c = AAA.
a = , b = AAA, c = AAA.
a = , b = AAA, c = 222.
==============================

2 вариант
==============================
use strict

my $a = \'AAA\'; # объявления поменяны местами
my $b = \'BBB\';

xyz($b, \'111\', $a);
xyz($b, $b, $a);
xyz($b, $a, $a);
xyz($b, $a, \'222\');

#то же самое
==============================

Выдает
==============================
a = BBB, b = 111, c = .
a = BBB, b = BBB, c = .
a = BBB, b = , c = .
a = BBB, b = , c = 222.
==============================


ПОЧЕМУ??? Куда пропадает значение первой переменной?

W2K, IndigoPerl 5.006
Название: Чудеса
Отправлено: Wyclef от 25 Марта 2003, 10:26:08
Цитировать
Снимите с ручника, плз. Что-то я совсем ничего не понимаю...


use strict;
Название: Чудеса
Отправлено: Glader от 25 Марта 2003, 10:35:29
АААА!!!! Спасибо огромное! надо же, проглядел. И ведь не ругался же, собака :)
Название: Чудеса
Отправлено: Xander от 25 Марта 2003, 10:52:53
Glader
А ты под консолью запускал или как-то по-другому?
Мне ActivePerl под консолью про такое всегда говорил, с полным указанием места ошибки.
Название: Чудеса
Отправлено: Glader от 25 Марта 2003, 11:57:23
Да, из far-а, причем даже -w ничего про это не говорит. Может, просто перл старый...
Название: Чудеса
Отправлено: Xander от 25 Марта 2003, 12:12:54
В общем он должен говорить. Попробуй от ActiveState.