Thanks jandrew, I haven't tried with IO::Callback, with which I think I need not use tiefilehandle anyway. But yes for your question , I already tried using "open" in pipe mode, this is not going to help me with its syntax limitation as I have a different subroutine for stdout & stderr and I can't open a pipe for both at same time. though indiviual pipe did help me redirect to the tied module function call back.