Thread Array of objects (6 answers)
Opened by kajoxx at 2009-12-03 21:33

MatthiasW
 2009-12-03 22:25
#128920 #128920
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Um ehrlich zu sein, habe ich noch nicht verstanden, wie deine Struktur denn nun eigentlich aussieht (CPAN:Data::Dumper ist sehr nützlich um eine Vorstellung davon zu bekommen), aber ich kann dir ein paar allgemeine Tipps geben:

1. Solltest du eine Struktur per Referenz an eine Unterfunktion übergeben. Das macht es leicht der Unterfunktion weitere Werte bzw. Strukturen mitzugeben.
Code (perl): (dl )
1
2
3
4
5
tarfiles( \@obj );
#...
sub tarfiles {
    my( $objlist ) = @_;
    #...


2. Werden Methodenaufrufe innerhalb von "" (double-quotes) nicht evaluiert. (Klar, da kann man auch drum herum, aber so wie du es zZ. machst, geht es nicht.) Du könntest also in der for-Schleife mal folgendes versuchen:
Code (perl): (dl )
1
2
3
for my $i ( 0 .. $#{$objlist} ) {
    logger->debug( "$i ". $objlist->[$i]->modulname );
} # for


3. Musst du in Perl generell nichts casten. Das passiert alles automatisch. Wenn in dem Array, das du an die Funktion übergibst Objekte drin sind, dann kannst du sie auch direkt als solche verwenden:
Code (perl): (dl )
1
2
3
sub foo { print pop->[0], "\n" }
my @objs = map bless([rand $_]), 1..10;
$_->foo for @objs;


MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'

View full thread Array of objects