Thread Von CGI.pm Methods erben (25 answers)
Opened by rosti at 2011-04-12 10:35

rosti
 2011-04-12 10:35
#147592 #147592
User since
2011-03-19
3472 Artikel
BenutzerIn
[Homepage]
user image
hi,

von CGI.pm möchte ich die methoden header und param erben, dazu bischen Code:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package Erbe;

use CGI;
use base 'CGI';
use strict;

sub new{
        my $class = shift;
        my $cgi = $class->SUPER::new;
        return bless {CGI => $cgi}, $class;
}

sub header{
        my $self = shift;
        my $class = ref($self);
        return $self->{CGI}->SUPER::header(@_);
}


Das geerbte CGI-Objekt steckt in $self->{CGI}, damit die geerbten Methoden nicht meine eigenen Attribute überschreiben.

Mit header funktioniert es, untenstehend der header und der dump:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
Content-Type: text/plain; charset=ISO-8859-1

bless({
CGI => bless({
".charset" => "ISO-8859-1",
".fieldnames" => {},
".header_printed" => 1,
".parameters" => [],
}, "Erbe"),
}, "Erbe")


Wenn ich dasselbe Overload sinngemäß

Code: (dl )
1
2
3
4
5
sub param{
my $self = shift;
my $class = ref($self);
return $self->{CGI}->SUPER::param(@_);
}


mit param() mache, gibt es eine Fehlermeldung:

Can't call method "SUPER::param" on an undefined value at

Was fehlt hier noch?

View full thread Von CGI.pm Methods erben