It is quite possible to write code like that, using nested loops with the same name on the iterator, and it is what happens when you use the default variable $_. Whether you should do it is another question.
What happens is that the variables become localized.
for my $i (1 .. 2) {
# $i == 1 or 2
for my $i (3 .. 4) {
# $i == 3 or 4
}
# $i returns to the old value 1 or 2
}
If you use the same variable name in a nested loop, you cannot access the loop iterator of the outer loop inside the inner loop. So in answer to your question, if not improper, it is rather impractical. And I assume that with less experienced programmers, it can lead to confusion, so in that sense, I would say it was not a good idea.