Halihallo bleau
ich möchte in einer pl datei ein obj. einer Klasse erzeugen und dieser Klasse durch den konstruktor ein objekt übergeben (in diesem Fall $cgi)
Willst du die Funktionsweise von CGI einfach nur erweitern, oder übernimmt die Klasse
auch noch andere Aufgaben? - Falls ersteres der Fall ist, wäre ein Erweitern der Klasse
sinnvoller.
sub new()
"sub new ()" - Konstrukte sind nur sinnvoll, wenn man Prototyping (und dafür sind die
Klammern gedacht) auch verwendet. Ansonsten ist "sub name {}" die korrekte Syntax.
{
my $class = shift;
my $self = {};
$self->{cgi} = shift;
Ich würde nicht so viele "shift"'s machen:
sub new {
my ($class,$cgi) = @_;
bless( {cgi=>$cgi}, $class );
}
macht das selbe.
möchte ich aber jetzt innerhalb einer Methode (innerhalb der Klasse my_class)
auf die methoden des cgi-Objektes zugreifen weis ich mir keinen rat!?
sub my_sub {
my ($self) = @_;
my %request = $self->{cgi}->Vars();
}
Beachte: $self->{cgi} ist ein Skalar, der eine Instanz des CGI-Moduls referenziert.
An Methoden oder Hash-values kommst du nur über einen dereferenzierenden Zugriff.
Will heissen:
$self->{cgi}{Vars} gibt es nicht. $self->{cgi}->{Vars} ist der korrekte dereferenzierte
Zugriff. Um dann an einen Wert des referenzierten Hashes zu kommen:
$self->{cgi}->{Vars}->{name}
denn auch Vars ist ein _referenzierter_ Hash, kein normaler. Merke einfach: Für eine
Referenz verwende "->" gefolgt vom "normalen" Zugriff (also ->{} für Hash, ->[] für
Arrays).
perldoc perldata
perldoc perlreftut
perldoc perlboot
perldoc perltooc
perldoc perldsc
perldoc perllol
Falls du dich in die Sache etwas einlesen möchtest, was ich sehr empfehle.
Viele Grüsse
Philipp
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.