'How do I determine the number of elements in an array reference?

Here is the situation I am facing...

$perl_scalar = decode_json( encode ('utf8',$line));

decode_json returns a reference. I am sure this is an array. How do I find the size of $perl_scalar?? As per Perl documentation, arrays are referenced using @name. Is there a workaround?

This reference consist of an array of hashes. I would like to get the number of hashes.

If I do length($perl_scalar), I get some number which does not match the number of elements in array.



Solution 1:[1]

$num_of_hashes = @{$perl_scalar};

Since you're assigning to a scalar, the dereferenced array is evaluated in a scalar context to the number of elements.

If you need to force scalar context then do as KARASZI says and use the scalar function.

Solution 2:[2]

You can also use the last index of the array to calculate the number of elements in the array.

my $length = $#{$perl_scalar} + 1;

Solution 3:[3]

You can see the entire structure with Data::Dumper:

use Data::Dumper;
print Dumper $perl_scalar;

Data::Dumper is a standard module that is installed with Perl. For a complete list of all the standard pragmatics and modules, see perldoc perlmodlib.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Peter Mortensen
Solution 2 Thaha
Solution 3 shawnhcorey