#!/usr/bin/env perl
use strict;
use warnings;
my $VAR1 = {
... as per your OP ...
};
my (@all_states, @comment_states);
for (map values %$_, values %$VAR1) {
my ($state, $comment) = ('', 0);
for (@$_) {
$state = substr $_, 11 if 0 == index $_, 'state_name=';
$comment = 1 if 0 == index $_, 'comments=';
}
push @all_states, $state if $state;
push @comment_states, $state if $comment;
}
use Data::Dump;
dd \@all_states;
dd \@comment_states;
####
["Alaska", "Puerto Rico", "Washington", "West Virginia"]
["Washington", "West Virginia"]
####
push @comment_states, $state unless $comment;
####
["West Virginia", "Washington", "Puerto Rico", "Alaska"]
["Puerto Rico", "Alaska"]