Re: Problem with anonymous array in hash
- From: "bernd" <bew_ba@xxxxxxx>
- Date: 17 Jul 2006 04:04:28 -0700
Thanks John, sometimes I am too concise with my code and omit things
which should not be omitted, e.g. braces ;-)
John W. Krahn wrote:
bernd wrote:
probably the solution is quite simple, but obviously I am blocked
currently concerning the following:
perl -e '@somearr=split(/ /,"11 12 13"); $hash{'array1'}->[0]=50;
$hash{'array1'}->[2]=100;printf("%d\n", scalar(@somearr));
printf("%d\n",
scalar(@$hash{'array1'}))'
Running this on the command line gives:
3
0
The first number is, as expected, the number of elements in the array
since evaluating an array in scalar context gives it's number of
elements. I would have expected "2" as the outcome for the second,
anonymous array stored in the hash, but obviously I am not referencing
to the array, or?
What am I doing wrong?
If you had enabled warnings perl would have given you a hint:
$ perl -we'
@somearr = ( 11, 12, 13 );
$hash{ array1 }[ 0 ] = 50;
$hash{ array1 }[ 2 ] = 100;
printf "%d\n", scalar @somearr;
printf "%d\n", scalar @$hash{ array1 };
'
3
Use of uninitialized value in printf at -e line 6.
0
The problem is that you are dereferencing $hash when you should be
dereferencing $hash{ array1 } like so:
printf "%d\n", scalar @{ $hash{ array1 } };
perldoc perlref
John
--
use Perl;
program
fulfillment
.
- References:
- Problem with anonymous array in hash
- From: bernd
- Re: Problem with anonymous array in hash
- From: John W. Krahn
- Problem with anonymous array in hash
- Prev by Date: Re: Problem with anonymous array in hash
- Next by Date: Re: Perl equivalent of this script?
- Previous by thread: Re: Problem with anonymous array in hash
- Next by thread: Re: Problem with anonymous array in hash
- Index(es):
Relevant Pages
|
|