use List::MoreUtils qw( natatime zip ); ## ... my $iterator = natatime 2, zip @{ $self->{ endpoints } }, @{ $self->{ wheels } }; while( my( $wheel, $pname ) = $iterator->next( ) ) { if( $wheel->ID == $wheel_id ) { frobnicate( $pname, $wheel ); } }