From juffi at ai.univie.ac.at Mon Jan 8 03:58:32 2001 From: juffi at ai.univie.ac.at (Johannes Fuernkranz) Date: Thu Aug 5 00:23:40 2004 Subject: [vienna.pm] Packages Message-ID: <3A598F48.B57D74C6@ai.univie.ac.at> * * * vienna-pm-list * * * Hallo, Gibt's die Liste noch? Und wenn ja, wieso posted niemand? (oder bin ich gar nicht mehr drauf?) Ich habe folgendes Problem, was vermutlich mit einem "Gewuszt wo" im Kamel zu beantworten waere: Ich habe ein package, in dem eine Klasse definiert wird. Ich moechte eine Funktion, die Elemente dieser Klasse verwendet exportieren. Wie mach ich das am Kluegsten? Also in etwa so: package A; <...some non-object-oriented functions...> package A::B; sub want_to_export_this { <... do something with A::B...> } Beide packages sind in einem File, was ich aus verschiedenen (vermutlich dummen) Gruenden beibehalten moechte. Meine momentane, hoechst unelegante Loesung ist, dasz ich im package A folgendes definiere: sub want_to_export_this { A::B::want_to_export_this(@_); } und diese Funktion mit allen anderen in A definierten exportiere. Das musz doch besser gehen? Grusz, Juffi -- Johannes Fuernkranz Austrian Research Inst. for Artificial Intelligence fax:+43-1-5336112-77 Schottengasse 3, A-1010 Vienna, Austria, Europe phone:+43-1-5336112-19 http://www.ai.univie.ac.at/~juffi mailto:juffi@ai.univie.ac.at --------------- "Life is too short for Chess." -- Byron ---------------- ### You are subscribed to vienna-pm-list as Johannes Fuernkranz http://www.fff.at/fff/vienna.pm/ From juffi at ai.univie.ac.at Mon Jan 8 16:03:13 2001 From: juffi at ai.univie.ac.at (Johannes Fuernkranz) Date: Thu Aug 5 00:23:40 2004 Subject: [vienna.pm] Packages References: <3A598F48.B57D74C6@ai.univie.ac.at> <20010108221954.T359@titan.soth.at> Message-ID: <3A5A3921.4040509@ai.univie.ac.at> * * * vienna-pm-list * * * Toni Andjelkovic wrote: > > lies den abschnitt ?ber vererbung (inheritance) im kamel, pp. 321 > oder den entsprechenden abschnitt in 'perldoc perltoot'. > soweit ich es verstanden habe, m?chtest du dass eine super-class Sorry, da war nicht genau genug. Das sind keine Methoden! package A definiert nur ein paar Funktionen, die eben ueber das normale Export-Interface exportiert werden sollen. Package A::B dagegen (wie gesagt im selben File) definiert eine Klasse, die von A verwendet werden soll. Weiters wird im Package A::B eine Art Konstante (als Funktion ohne Argumente) definiert, die vom Typ/Klasse A::B ist (also ein bestimmte vordefinierte Instanz dieser Klasse). Diese moechte ich aus dem gesamten Package exportieren. Da ich im package A nicht ?use A::B? schreiben kann (dann sucht er das File A/B.pm, welches es nicht gibt, es gibt nur ein A.pm), musz ich (glaube ich) irgendwie die Konstante in den Namespace von A bringen, damit ich ihn von dort aus exportieren kann. Also etwas detaillierter: ------ Beginn A.pm ------ package A; # A ist keine Klasse, sondern ein File, in dem # mehrere Klassen/Datenstrukturen definiert werden, die man nur zusammen # inkludieren kann. use base 'Exporter'; @EXPORT qw(constantXYZ); # Die folgenden 4 Zeilen moechte ich eleganter loesen! # Insbesondere so, dasz ich das ganze automatisch machen koennte, # wenn ich eine Liste der Symbole haette, die in A::B definiert, # aber aus A exportiert werden sollen. use subs(qw(constantXYZ)); sub constantXYZ { return A::B::constantXYZ(); } package A::B; # Das ist eine Klasse # constructor fuer A::B; sub new { ..... } # methode fuer A::B; sub doit{ .... } # constantXYZ definiert eine Konstante von Typ A::B # es ist keine Methode! sub constantXYZ { return A::B::new('xyz'); } package A::C; # Das ist eine andere Klasse .... ----- Ende A.pm -------- Das kann ich nun so verwenden: use A; constantXYZ->doit(); Die Frage ist nun, ob man das irgendwie eleganter loesen kann, sodasz ich in A keine Extra-Prozedur definieren musz. > oder du machst in A eine AUTOLOAD-methode, die > ihrerseits eine methode von A::B aufruft, aber > das finde ich nur begrenzt sinnvoll. An AUTOLOAD hab ich auch schon gedacht, aber das erscheint mir auch nur begrenzt sinnvoll (noch dazu wo ich das AUTOLOAD schon fuer was anderes verwende :-) ) >> Beide packages sind in einem File, was ich aus verschiedenen (vermutlich >> dummen) Gruenden beibehalten moechte. > > gehe in dich und erforsche die dummen gr?nde [:)] cu, Ich werde auf jeden Fall in mich gehen, und vermutlich doch aus dem ganzen 3 Files machen (A.pm, A/B.pm, A/C.pm) dann geht es vielleicht. Obwohl, sicher bin ich mir nicht, weil das package A::B natuerlich ein 'use A' enthaelt, sodasz das irgendwie zirkulaer wird, wenn ich dann ins package A ein 'use A::B' hineinschreibe. Aber ich kann mir vorstellen, dasz das perl das trotzdem schluckt. Auf jeden Fall danke! Juffi PS: Freut mich, dasz es die Liste noch gibt. Schoenes neues Jahr an alle! ### You are subscribed to vienna-pm-list as Johannes Fuernkranz http://www.fff.at/fff/vienna.pm/ From boehm at isis.wu-wien.ac.at Mon Jan 22 02:37:08 2001 From: boehm at isis.wu-wien.ac.at (Walter Böhm) Date: Thu Aug 5 00:23:40 2004 Subject: [vienna.pm] cgi.pm und Cache control Message-ID: <01012209441101.19856@archimedes> * * * vienna-pm-list * * * Liebe Leute, ich hab da ein Problem mit dem Cachen der Browser. Ich habe mehre cgi scripts, die Dokumente erzeugen, welche Bilder (im png-Format) referenzieren. Das Problem ist, dass diese Bilder Nacht fuer Nacht durch ein Maintainer Script neu erzeugt werden, ihre Namen sich aber nicht aendern. Die bleiben also img1.png img2.png etc. Wenn nun ein User am naechsten Tag wieder kommt, dann sind die alten Bilder meistens noch im Cache seines Browsers. Natuerlich koennte er shift+reload druecken. Aber das moechte ich vermeiden. versucht hab ich schon header(-expires=>'0') und header(-pragma=>'no-cache'), aber das bezieht sich auf das Dokument an sich, wies scheint, und nicht auf die Bilder, die im Dokument referenziert werden. Gibts da eine elegante Loesung? Vielen Dank im voraus W. Boehm ### You are subscribed to vienna-pm-list as Walter Böhm http://www.fff.at/fff/vienna.pm/ From marcel at codewerk.com Wed Jan 24 08:44:57 2001 From: marcel at codewerk.com (Marcel Grunauer) Date: Thu Aug 5 00:23:40 2004 Subject: [vienna.pm] Aufwachen! Message-ID: <200101241444.f0OEivN19258@gandalf.local> * * * vienna-pm-list * * * Hallo Leute, Vienna.pm ist ziemlich tot. Das wird einem umso schmerzlicher bewusst, wenn man laengere Zeit mit London.pm oder NY.pm verbracht hat. Hier gibt's keine Treffen, keinen traffic auf der mailing list, und wenn jemand mal (einmal pro Monat) eine Frage stellt, wird sie nicht diskutiert (oder wenn, dann nur off-list). London.pm hat die YAPC::Europe organisiert, hat regelmaessige (sehr regelmaessige) Treffen in pubs, technical meetings wo kurze Talks (5-20 Minuten jeweils) gehalten werden usw. Sie haben auch einen eigenen IRC channel auf einem server, auf dem auch #perl beheimatet ist. Auf ihrer mailing list herrscht reger Verkehr. Vienna.pm hat nichts dergleichen. Das soll sich aendern. Wir sollten uns wieder mal treffen, und das zu einer regelmaessigen Institution machen. Ich wuerde auch gerne Open Perl Training sessions halten, d.h talks variabler Laenge, thematisch etwa "Einfuehrung in Perl", "Objektorientiertes Programmieren in Perl (Module, Referenzen, Objekte)" usw. Manche Perlmonger-Gruppen treffen sich immer an einem bestimmten Tag, etwa "erster Donnerstag im Monat". Das koennten wir prinzipiell auch machen, wie waer's mit "dritter Donnerstag im Monat"? Das waere der 15. Februar 2001. Vorschlaege, Anregungen? Marcel -- We are Perl. Your table will be assimilated. Your waiter will adapt to service us. Surrender your beer. Resistance is futile. -- London.pm strategy aka "embrace and extend" aka "mark and sweep" ### You are subscribed to vienna-pm-list as marcel@codewerk.com (Marcel Grunauer) http://www.fff.at/fff/vienna.pm/ From marcel at codewerk.com Wed Jan 24 09:36:00 2001 From: marcel at codewerk.com (Marcel Grunauer) Date: Thu Aug 5 00:23:40 2004 Subject: [vienna.pm] Reply to list, bitte Message-ID: <200101241536.f0OFa0N20968@gandalf.local> * * * vienna-pm-list * * * Hi nochmal; Was ich noch vergessen habe: Diskussionen bzgl. Treffen und Mongern bitte auf die Liste und nicht an mich privat; da koennen wir dann auch gleich Termin und Ort usw. koordinieren. Marcel -- We are Perl. Your table will be assimilated. Your waiter will adapt to service us. Surrender your beer. Resistance is futile. -- London.pm strategy aka "embrace and extend" aka "mark and sweep" ### You are subscribed to vienna-pm-list as marcel@codewerk.com (Marcel Grunauer) http://www.fff.at/fff/vienna.pm/