my $pcname; foreach my $objItem (in $colItems) { next unless $objItem->{Description} eq "..."; $pcname = $objItem->{DNSHostName}; last; } #### my @pcnames; foreach my $objItem (in $colItems) { next unless $objItem->{Description} eq "..."; push(@pcnames, $objItem->{DNSHostName}); } #### use List::Util qw( first ); my $pcname = map { $_->{DNSHostName} } first { $_->{Description} eq "..." } in $colItems; #### my @pcnames = map { $_->{DNSHostName} } grep { $_->{Description} eq "..." } in $colItems; #### my @pcnames = map { $_->{DNSHostName} } grep { $_->{Description} eq "..." } in $colItems; die("Unable to find network card\n"); if @pcnames == 0; warn("Found multiple network cards. Using the first one\n") if @pcnames != 1; my $pcname = $pcnames[0];