Thanks, folks! I'll save these messages forever. Oddly enough, it's hard to find a manual entry that explains all the answers I got in that much detail. Possible, mind you, but hard . . .

--Richard


On 2003.06.24 21:08 b wrote:
Richard,

This is the way I think of it. And you can extend this logic to all
your
dereferencing needs. Forgive me if I tell you things you already know.

A scalar is one "thing". ${}
An array is many things stacked together, one after the other. @{}
A hash is a set of named things %{}.

So I want the zeroth thing from a stack of things. ${}[0]
Or I want the "bob" thing from a set of named things ${}{'bob'}

In the above syntax I never filled in the {}'s. But the {}'s always
contains a reference. Sometimes that reference is just a variable name
like in ${foo}. But other times that reference is a variable itself
like
in ${$bar}.

Fortunately perl lets us cheat and type a little less. So ${foo} is
also
$foo and ${$bar} is the same as $$bar.

This means that when you do a $$hashed_row{'field_name'} you are
actually saying: I have a set of named things %{}. That set is called
by
the reference $hashed_row. i.e. %{$hashed_row} But I only want the one
thing named field_name from %{$hashed_row} so... ${}{'field_name'} one
thing named field_name plus the reference $hash_row gives us
${$hash_row}{'field_name'}. But like I said, perl lets us cheat and
that
is what gives you the syntax $$hash_row{'field_name'}.

my @array;
my $array_ref = [EMAIL PROTECTED];

"@array" now has two names, @{array} and @{$array_ref}

Confused yet?... good

But there is a cleaner way to do it. The arrow "->". The arrow syntax
is
a subsitute for @{}. %{} and &{}. This is how it works. Lets say we
have
a reference $zweeb. And it is actually a reference to an array. So
it's
proper form is @{$zweeb}. But perl knows that every time we want
something out of an array we use the []'s to say which element we
want.
So really the only thing we need to tell perl is that $zweeb not zweeb
is the reference to use. The -> does that. This means ${$zweeb}[0] and
$zweeb->[0] are the same thing. And so is ${$a}{'joe'} and $a->{'joe'}
or &{$fctn}() and $fctn->().

Hope that helps.
|b

On Tue, 2003-06-24 at 21:05, Richard Schilling wrote:
> Just a quick question, and perhaps it's a Perl language question.  I

> forget, but why do you have to reference a hash with a double "$$"
when
> you use fetchrow_hashref?
>
> [-
> use DBI;
>
> # code to open connection, run query, etc . . .
> -]
>
> [$ if $hashed_row = $query->fetchrow_hashref $]
> fieldname: [+ $$hashed_row{'fieldname'} +]<br>
> [$ endif $]
>
> Don't know why but for some reason I'm drawing a blank . . .
>
> Thanks.
>
> --Richard
>
> > > >
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to