From hjp-vienna-pm-list at hjp.at Sun Aug 20 10:21:51 2006 From: hjp-vienna-pm-list at hjp.at (Peter J. Holzer) Date: Sun, 20 Aug 2006 19:21:51 +0200 Subject: [Vienna-pm] Was macht mod_perl da? Message-ID: <20060820172151.GA27737@hjp.at> Ich spiele gerade ein bisschen mit Output-Filtern in mod_perl herum, und dabei ist mir folgendes aufgefallen: Normalerweise muss man in Perl nur die Module "use"n, deren Package-Methoden man aufruft. Bekommt man von irgendwoher ein Objekt aus einer anderen Klasse, kann man dessen Objekt-Methoden aufrufen, weil das entsprechende Package von dem Package, das das Objekt erzeugt hat, geladen wurde. Also z.B.: | use MIME::Parser; | my $parser = new MIME::Parser(output_to_core => 'ALL'); | my $entity = $parser->parse_data($rawmsg) or die "couldn't parse MIME stream"; | my $head = $entity->head(); Hier kann ich $entity->head() aufrufen, ohne vorher ein use MIME::Entity; gemacht zu haben. Daf?r hat schon MIME::Parser sp?testestens in $parser->parse_data(). Nicht so bei mod_perl. | package MyApache2::OutputFilter; | | use strict; | use warnings; | | use base qw(Apache2::Filter); | | use Apache2::Const -compile => qw(OK); | | use constant BUFF_LEN => 1024; | | sub handler : FilterRequestHandler { | my $f = shift; | my $c = 0; | | unless ($f->ctx) { | $f->r->headers_out->unset('Content-Length'); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | $f->ctx({}); | } geht f?rchterlich schief, mit den Fehlermeldungen Can't locate object method "unset" via package "APR::Table" (meistens) oder Can't locate object method "headers_out" via package "Apache2::RequestRec" (manchmal) F?gt man | use Apache2::RequestRec (); | use APR::Table (); ein, so funktioniert es. Offensichtlich wird hier von den Klassen Apache2::RequestRec und APR::Table genug geladen, um Objekte dieser Klassen erzeugen zu k?nnen, aber etliche Methoden fehlen noch und werden auch nicht ?ber den Autoloader bei Bedarf erzeugt :-(. hp -- _ | Peter J. Holzer | Schlagfertigkeit ist das, was einem |_|_) | Sysadmin WSR | auf dem Nachhauseweg einf?llt. | | | hjp at hjp.at | -- Lars 'Cebewee' Noschinski in dasr. __/ | http://www.hjp.at/ | -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: Digital signature Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20060820/860d8ce1/attachment.bin