my @newarray; for (@array) { my ($prefix) = /^(\d+)/ or die "Missing leading integer in $_\n"; ## generate missing elements based on length of @newarray: push @newarray, (@newarray + 1) . ".lost" while @newarray < $prefix - 1; push @newarray, $_; } @array = @newarray; # copy the results back