[Moscow.pm] Иногда вещи не то , чем кажутся

Anatoly Sharifulin sharifulin на gmail.com
Ср Июн 4 07:19:03 PDT 2008


Ну или:

my %pp = $q->Vars();
$pp{arr} = $a_ref;
say "3. container ref=" . ref \%$pp;
say "3. val=" . $pp{arr};
say "3. ref=" . ref $pp{arr};

Документация решает:

The Vars() method does this. Called in a scalar context, it returns the
parameter list as a tied hash reference. Changing a key changes the value of
the parameter in the underlying CGI parameter list. Called in a list
context, it returns the parameter list as an ordinary hash. This allows you
to read the contents of the parameter list, but not to change it.

4 июня 2008 г. 18:11 пользователь Alex Shatlovsky <shatlovsky на gmail.com>
написал:

> Здравствуйте, Vladimir.
>
> Вы писали 4 июня 2008 г., 17:47:44:
>
> > On Wednesday 04 June 2008 17:45:14 Alex Shatlovsky wrote:
> >> Здравствуйте,
> >>
> >> Исходный код примера:
> >> ================================
> >> #!/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};
>
> > say "3. tied = " . tied($pp);
>
> Угу, только немного иначе:
> say "3. tied = " . tied(%$pp);
>
> ================================
> 1. container ref=HASH
> 1. val=ARRAY(0x921a408)
> 1. ref=ARRAY
> 2. container ref=HASH
> 2. val=ARRAY(0x921a408)
> 2. ref=
> 3. tied = CGI=HASH(0x91cb8cc)
> ================================
>
>
>
> --
> С уважением,
> А.Н.Шатловский
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
С уважением,
Анатолий Шарифулин.
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: http://mail.pm.org/pipermail/moscow-pm/attachments/20080604/79a6f340/attachment-0001.html 


Подробная информация о списке рассылки Moscow-pm