If you use "use strict" then perl will catch those. If you notice the second groups rrr reference prints a value that has not even been set. I don't know how perl handles these situations without use strict, so i don't know why this happens.
The second example works exactly as the third example. It doesn't matter what string we use - an empty string works the same as a string with a different value.