in reply to Looping through an array of hashrefs

What you need to do is step through that code yourself and see what it does. If you don't see the problem mentally, then add print statements all over.

sub validate_properties { my $properties = shift; for my $prop (@{$properties}) { if (is_supported($prop)) { $prop->{supported} = 1; } else { $prop->{supported} = 0; } return $properties; } }
  1. (line 2) Shift in the properties array ref. OK.
  2. (line 3) Start loop. First element of properties is $prop. Righto.
  3. (lines 4-8) Set $prop->{supported}. Mmhmm.
  4. (line 9) Exit the function. Er...
  5. (line 10) Goto line 3, and finish the rest of the elements. Ooops, we never get here, because we exited the function already.