my @networks = (); for my $device (@deviceList) { if (not defined $device->{network}) { $_->{network} = $numDisjointNetworks for BFSonConnections($device); #DFS works fine too $numDisjointNetworks++; } push @{$networks[$device->{network}]}, $device; }