Perhaps just on this machine, perl is configured differently (e.g. bigger buffers), or the operating system might add another level of buffers ...
"rc3" sounds like an init script, that would log to a file, wouldn't it? So that is usually buffered.
Most probably your login triggers other activities that make your "rc3" print additional messages, thus filling the buffer and writing it out to disk, and then your tty can see it.
(This section edited) In my previous msg I overlooked that you print also to a file handle and not only to STDOUT.
Put the $|=1; statement right after the "hanging" print statement, better yet, put it after both print statements in line 12 and 15, and give it a try.