Schrift
[thread]11017[/thread]

Alle Arrays automatisch blessen ???



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
KurtZ
 2007-12-13 16:27
#103829 #103829
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Hi

ich habe ein sehr tiefgehenede Frage, vielleicht kann mir jmd helfen oder auf ein Guruforum weiterverweisen...

Ich möchte alle Arrays defaultmäßig mit einer Klasse blessen... "autobless" scheints nicht zu geben. Oder gibts in Perl irgendwo ein "universal Array-Object" dass ich erweitern könnte?

In Javascript kann ich z.B. dem Objekt Array Methoden hinzufügen.

mal konkreter, folgender Code

Code (perl): (dl )
1
2
$a=[1,2,3];
print $a->length();


liefert Can't call method "length" on unblessed reference at

zwar könnte ich hergehen und ein Klasse ARRAY definieren

Code (perl): (dl )
1
2
$a=ARRAY->new(1,2,3);
print $a->length();


ABER bei literalen Arrays wär ich trotzdem aufgeschmissen

Code (perl): (dl )
1
2
$a=[[a,b,c],1,2,3];
print $a->[0]->length();


habe schon mit Overload herumexperimentiert und da kann ich tatsächlich literale Stringdefinitionen abfangen und blessen, für Arrays konnte ich aber nichts finden.

Irgendjmd eine Idee?

Tschau
KurtZ
TMTOWTDYOG (there's more than one way to dig your own grave)
pq
 2007-12-13 16:40
#103830 #103830
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
obwohl ich meine, dass man sowas in perl nicht unbedingt braucht:
CPAN:autobox
gerade erst auf dem letzten perl mongers treffen gelernt.

Code (perl): (dl )
1
2
3
4
5
6
7
$ perl -wle'
use autobox ARRAY => 'MyClass';
sub MyClass::length { return scalar @{$_[0]} }

my $aref = [1,2,3,6,7,8];
print $aref->length'
6


in perl 6 ist das glaube ich einfacher, weil da z.b. arrays eh schon objekte sind.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
KurtZ
 2007-12-13 17:36
#103833 #103833
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Cool, danke für die schnelle Antwort!

Habe mal in die Sourcen reingeschaut, wenig verstanden aber
Code (perl): (dl )
use XSLoader;

bedeutet wohl dass einiges in C realisiert wurde, oder?

... Perl6 ...

stimmt wohl, aber das Leben ist kurz... IYKWIM!

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"

genialer Spruch ... geiles Buch. :-)

Cheers
KurtZ

TMTOWTDYOG (there's more than one way to dig your own grave)
pq
 2007-12-13 17:53
#103835 #103835
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
KurtZ+2007-12-13 16:36:04--
Code (perl): (dl )
use XSLoader;

bedeutet wohl dass einiges in C realisiert wurde, oder?

genau, ich wüsste auch nicht, wie man sowas mit pure-perl machen sollte =)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
KurtZ
 2007-12-13 18:17
#103837 #103837
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Hi

pq+2007-12-13 16:53:52--
KurtZ+2007-12-13 16:36:04--
...
bedeutet wohl dass einiges in C realisiert wurde, oder?

genau, ich wüsste auch nicht, wie man sowas mit pure-perl machen sollte =)


naja ... vielleicht wenn man "->" überladen dürfte ... (darf man nicht)

Konnte es bei mir installieren, aber ob ichs dann bei einem Provider hinkriege ist ne andere Frage...

Thx again!

KurtZ
TMTOWTDYOG (there's more than one way to dig your own grave)
pq
 2007-12-13 18:20
#103838 #103838
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
KurtZ+2007-12-13 17:17:34--
Konnte es bei mir installieren, aber ob ichs dann bei einem Provider hinkriege ist ne andere Frage...

wenn du keinen direkten shellzugang hast, kriegst du es evtl. mit cgipan hin...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
KurtZ
 2007-12-13 18:33
#103839 #103839
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
pq+2007-12-13 17:20:20--
wenn du keinen direkten shellzugang hast, kriegst du es evtl. mit cgipan hin...


Ja, schon davon gelesen, und war zum Glück noch nicht in der Zwangslage etwas nachzuinstallieren, aber erlauben Provider ihren Klienten wirklich einen
C-Compiler zu starten?

Will ich so einen Provider haben?

(Vielleicht bin ich in der Beziehung auch zu paranoid... ;)
TMTOWTDYOG (there's more than one way to dig your own grave)
nepos
 2007-12-13 18:50
#103841 #103841
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Denke kaum, dass ein Provider dir nen Compiler mit hinlegt...
Aber ich frage mich auch, wozu man sowas denn braucht? Was reicht dir an der normalen Perl-Syntax denn nicht, dass du sowas brauchst?
pq
 2007-12-13 19:20
#103842 #103842
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
KurtZ+2007-12-13 17:33:51--
aber erlauben Provider ihren Klienten wirklich einen
C-Compiler zu starten?

manche schon.
Quote
Will ich so einen Provider haben?

ich schon =)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2007-12-13 19:22
#103843 #103843
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
nepos+2007-12-13 17:50:11--
Denke kaum, dass ein Provider dir nen Compiler mit hinlegt...

viele bieten einfach ne standard-linux-umgebung, und da ist der gcc einfach oft dabei.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2007-12-13 16:27.