PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl/Tk: Can't call method "delete" on ...



Christian81
29-07-2002, 08:20
Hallo

Ich habe ein kleines Problem bezüglich dieser Fehlermeldung:
Can't set -options to `ARRAY(0x848ac50)' for Tk::Optionmenu=HASH(0x848cd0c): Can't call method "delete" on an undefined value at ./Start.pl line 243

Sie tritt komischerweise unter perl 5.00x nicht auf, aber unter perl 5.6x. Auch habe ich absolut keine Ahnung, was an dem Aufruf falsch sein sollte, zumal er ja geht. Ich werde es heute abend einmal mit perl 5.8.0 probieren, eventuell geht es dort...

Hat jemand eine Idee oder eine ähnliche Fehlermeldung und kann mir helfen?

fork
29-07-2002, 16:36
Hat ich vor kurzem auch mal. Kann ein nicht erfolgreich initialisiertes Objekt sein(bei mir FTP->new() ). Poste mal die relevanten Codeausschnitte.

Zum testen ob das Objekt erfolgreich initialisiert/erzeugt kann man so etwas in der Art verwenden:



my $ftpobj=Net::FTP->new("ftp.funet.fi") or warn("Kann kein FTP Objekt erstellen!($!)\n");
if ($ftpobj) {
$ftpobj->login("foo-account","bar-password")
} else {
print "Initialisierung des FTP Objektes ".
"fehlgeschlagen(keine FTP Verbindung zu ftp.funet.fi moeglich!)\n";
}

Christian81
30-07-2002, 06:49
Ich habe es gestern nach etwas längeren Suchen gelöst (der Code ist etwas länglich und nicht von mir selbst programmiert... ;) )
Es war ein uniinistialisiertes Objekt, was aufgerufen worden war.
Es war die Routine, die aufgerufen wird, wenn am Button etwas passiert. Sie wollte auf ein Objekt zugreifen, das zu diesem Zeitpunikt noch nicht da war. Bei Perl 5.0x wird die Routine beim initialisieren des Optionmenüs nicht aufgerufen - deshalb dort keine Fehlermeldung. Bei Perl 5.6.x dagegen wird sie beim initialisieren einmal aufgerufen (ist bei näherer Betrachtung auch logischer) und deshalb dkam dort der Fehler.