Having been named, I can't resist stepping in to say that AP is absolutely right – even though it wasn't me. If you open the result of a console command, that command will execute until it finishes, and the calling process will be entirely blocked until it finishes. Domain-specific shell commands such as sleep will not change this. Perl of course does provide ample support for multithreading and child processes, but this isn't how to do it ... as everyone around here other than perhaps yet the OP very well knows.
So ... might anyone please explain to the OP how (s)he can achieve this objective, within the TK context? I can't authoritatively speak to that, but someone else promptly should.