in reply to null keys

I am not sure if I quite understand your question. Did you actually ask a question? Anyway, some remarks.

First, there is no such thing as a "null" value in Perl. Perhaps you mean an undefined value, or perhaps you mean an empty string. If you try to use an undefined value as a hash key, Perl will act as if you tried to use an empty string. Because that's what Perl does with undefined values being used as strings.

I am not sure whether you realize what the syntax &$hash{$params->{action}}->() means. First of all, it's a syntax error, the right syntax would be &{$hash{$params->{action}}}->(). But that assumes $hash{$params->{action}} stores a code reference, whose return value is another code reference.

As for pushing things to arrays, any scalar or list value can be pushed to an array. Including undefined values and empty strings.

Abigail

Replies are listed 'Best First'.
Re: Re: null keys
by hakkr (Chaplain) on Jun 13, 2002 at 08:48 UTC

    The syntax works fine for me, $hash is just the hash of code referances $params->{action} is just the key for which one to call. Here is the surrounding code.

    my $q =new CGI; my $params=$q->Vars(); my %hash=('sub1'=>\&sub1,'sub2'=>\&sub2, ''= >\&notfound); main(); sub main { #call the sub as defined by cgi param 'action' &$hash{$params->{'action'}}->() ; }

    Thanks all for the tip on pushing undef, don't know if I asked much of a question was just checking this is 'normal' behaviour Update My mistake somehow added quotes when retyping

      The syntax works fine for me

      For which version of Perl and which platform? I just tried compiling the program on every version of Perl since 5.000, and it just doesn't compile on any version.

      $hash is just the hash of code referances

      No, it's not. The values in the hash are strings, not code references. Had you dropped the quotes, then it would be code references.

      Abigail