[Moscow.pm] Иногда вещи не то, чем кажутся
Alex Shatlovsky
shatlovsky на gmail.com
Ср Июн 4 06:45:14 PDT 2008
Здравствуйте,
Исходный код примера:
================================
#!/usr/bin/perl -w
use strict;
use CGI;
sub say { print join "", @_, "\n"; }
my $p = {};
my @arr = (1,2,3);
my $a_ref = \@arr;
$p->{arr} = $a_ref;
say "1. container ref=" . ref $p;
say "1. val=" . $p->{arr};
say "1. ref=" . ref $p->{arr};
my $q = new CGI;
my $pp = $q->Vars();
$pp->{arr} = $a_ref;
say "2. container ref=" . ref $pp;
say "2. val=" . $pp->{arr};
say "2. ref=" . ref $pp->{arr};
================================
Данный пример печатает следующее:
================================
1. container ref=HASH
1. val=ARRAY(0xa02f3a0)
1. ref=ARRAY
2. container ref=HASH
2. val=ARRAY(0xa02f3a0)
2. ref=
================================
Обратите внимание на последние 2 строчки: при сохранении во второй
хеш ссылки на массив, ссылка превратилась в свое скалярное
представление.
И ведь не сразу сообразишь, где собака зарыта.
Пользуясь случаем, хочу передать пламенный привет разработчикам CGI.pm :-)
Кстати, так и не понял - фича это или баг.
--
С уважением,
А.Н.Шатловский
Подробная информация о списке рассылки Moscow-pm