Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: Re (tilly) 1: overloading the print function (or alternatives)

by Hot Pastrami (Monk)
on Dec 04, 2000 at 23:42 UTC ( [id://44841]=note: print w/replies, xml ) Need Help??


in reply to Re (tilly) 1: overloading the print function (or alternatives)
in thread overloading the print function (or alternatives)

How about overloading it in a more informative way? Perhaps you could overload print() with something like this (untested):

sub print { my $string = join '', @_; if ($string =~ /^(Content-type:)/) { CORE::print $string; } else { CORE::print "Content-type: text/html\n\n"; die "You used print() rather than returning a string, you naughty +person"; } }
Something I DON'T know, however... would one need to prototype this overloaded print() to assure that it would work when used without parenthases, or is that taken care of becuase the built-in print() is already prototyped? You'd probably want to be sure beore doing it this way.

Alan "Hot Pastrami" Bellows
  • Comment on Re: Re (tilly) 1: overloading the print function (or alternatives)
  • Download Code

Replies are listed 'Best First'.
Re (tilly) 3: overloading the print function (or alternatives)
by tilly (Archbishop) on Dec 04, 2000 at 23:57 UTC
    Then you would mess up someone who had inserted:
    print STDERR "Called node 'foo'\n";
    as a debugging aid. (The messsage should show up in your webserver's logs.) The following (untested) code is much nicer:
    package noprint; use Carp; sub PRINT { my $msg = Carp::longmess("You must return rather than print"); print "Content-type: text/plain\n\n$msg"; die $msg; } *PRINTF = *PRINT; sub TIEHANDLE { return bless ({}, shift); }
    and elsewhere in the code:
    tie(*NOPRINT, 'noprint'); select(NOPRINT); # time passes while the page is built. # Before spitting out the final page: select(STDOUT);
    That catches the newbie error. Without the potential for headaches that overriding print causes.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://44841]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (7)
As of 2025-07-17 09:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.