use Safe ; my $PACK = new Safe ; $PACK->deny(qw( wantarray vec warn grepstart grepwhile mapstart mapwhile enteriter iter enterloop leaveloop unstack last next redo goto readline rcatline getc read formline enterwrite leavewrite print sysread syswrite send recv eof tell seek sysseek readdir telldir seekdir rewinddir bless sprintf prtf crypt tie untie dbmopen dbmclose sselect select pipe_op sockpair getppid getpgrp setpgrp getpriority setpriority localtime gmtime rand srand atan2 sin cos exp log sqrt reset chroot syscall dump exit die warn fork lock threadsv )) ; ## I use select to turn of output: my $sel = select(NULL) ; $PACK->reval(q` ## your code that need to be safe.... `) ; ## select again the previous output: select($sel) ;