Снимите с ручника, плз. Что-то я совсем ничего не понимаю...
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