How about you simply write 

    while( my ( $type_id, $value ) = splice( @sans, 0, 2 ) ) {

instead of 'pinching' natatime() from List::MoreUtils?