Bootstrap FreeKB - Perl (Scripting) - Determine if an array in a hash is defined
Perl (Scripting) - Determine if an array in a hash is defined

Updated:   |  Perl (Scripting) articles

In Perl, there are 2 different kinds of hashes.

  • A hash, which is defined by the % and ( ) characters - %hash = ( );
  • A reference hash, which is defined with the $ and { } characters - $hash = { };


The following if statement will return "is defined" when the hash array named %hash is defined.

if ( %hash ) {
  print "The regular hash named \%hash is defined\n";


If the hash array named %hash has not been defined, something like this will be returned.

Global symbol "%hash" requires explicit package name


Let's say you create a regular hash that contains an array. In this example, the foo key is an array, as indicated by the [ ] characters.

my %hash = ( 'foo' => [] );


Dumper can be used to display the structure.

use Data::Dumper;
print Dumper \%hash;


Which should return the following.

$VAR1 = {
          'foo' => []


Now the following if statement should return "is defined".

if ( %hash ) {
  print "is defined \n";


Here is how you would determine if %hash contains a key named "foo".

foreach my $key ( keys %hash ) {
  if ( $key eq "foo" ) {
    print "The foo key is defined \n";
  else {
    print "The foo key is not defined \n";


Did you find this article helpful?

If so, consider buying me a coffee over at Buy Me A Coffee


Add a Comment

Please enter 0d333d in the box below so that we can be sure you are a human.