From: "Chas. Owens" <[EMAIL PROTECTED]> > On Mon, Feb 25, 2008 at 9:43 PM, Panda-X <[EMAIL PROTECTED]> wrote: > > Sorry... the email is unfinished, the reason why I need to do this is > > because > > I don't want to pollute the existed codes / context ... the original print > > statements would > > like to retain, but I can still do the translations by adding : > > use OverridePrint; > > in a common module that all existed scripts are now using. > snip > > You can find out whether or not a core function can be overridden by > calling the prototype* function with that function's name prepended > with CORE::. If it returns a prototype, then you can override it, if > it returns undef, then you cannot. Unfortunately for you, print can > not be overriden (most likely because of its indirect object syntax > file handle wonkiness); however, there is another way: source filters. > You can use Filter::Simple to replace every call to print with a call > to my_print. Please note that it isn't quite that simple though.
No need for source filters. All you have to do is to implement whatever special behaviour you need for a tied (magical) filehandle (see perldoc perltie perldoc Tie::Handle ) and then create and select the filehandle: use OverridePrint; tie *FH, 'OverridePrint'; # plus whatever other parameters you need select(FH); Basicaly the whole point is that instead of overriding print() for all filehandles you override it just for that one filehandle ... Jenda ===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz ===== When it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- Terry Pratchett in Sourcery -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/