Schrift
[thread]12768[/thread]

Anfängerfrage zu Subs und Parametern

Leser: 3


<< >> 10 Einträge, 1 Seite
Gast Gast
 2008-11-17 11:09
#116309 #116309
Hallo zusammen!
Folgende Situation:
Ich habe in einer Perldatei (test.pl) einen hash implementiert.
----------------------
Code: (dl )
my %testhash('test' => sub{ 'hallo'})

----------------------

Ich übergebe diesen Hash per Referenz an eine Funktion in einem Perlmodul (test.pm)
----------------------
Code: (dl )
Test::hauptfunk->start(\%testhash)

----------------------

Mein Frage:
Wie kann ich in dem Perlmodul auf den Inhalt des Sub's zugreifen? Ich würde ganz gerne auf 'hallo' in dem Sub zugreifen!!

Vielen Dank für die Hilfe
MfG
Peter

//Modedit GwenDragon: Titel geändert
Crian
 2008-11-17 11:27
#116310 #116310
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Du benutzt einfach %$parameter oder $parameter->{'test'} in dem Modul.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pq
 2008-11-17 11:31
#116311 #116311
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Gast+2008-11-17 10:09:38--
Hallo zusammen!
Folgende Situation:
Ich habe in einer Perldatei (test.pl) einen hash implementiert.

naja, hashes implementieren tut perl. du benutzt sie nur.
Quote
Code: (dl )
my %testhash('test' => sub{ 'hallo'})

das ist kein gültiges perl.
Quote
Ich übergebe diesen Hash per Referenz an eine Funktion in einem Perlmodul (test.pm)
[...]
Mein Frage:
Wie kann ich in dem Perlmodul auf den Inhalt des Sub's zugreifen? Ich würde ganz gerne auf 'hallo' in dem Sub zugreifen!!

hast du schon die passende doku zu referenzen/datenstrukturen gelesen?
es ist immer ganz höflich, zu sagen, was man schon kann und was nicht.
Code (perl): (dl )
1
2
3
4
5
sub foo {
    my ($hashref) = @_;
    my $sub = $hashref->{test};
    my $hallo = $sub->();
}
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
Ronnie
 2008-11-17 11:31
#116312 #116312
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Crian+2008-11-17 10:27:33--
Du benutzt einfach %$parameter oder $parameter->{'test'} in dem Modul.

Yip, da es aber ein Funktionsaufruf sein soll: $parameter->{'test'}()
lichtkind
 2008-11-17 12:05
#116313 #116313
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ja was in diesem fall auch etwas sauberer ist als die schreibweise mit &
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
Linuxer
 2008-11-17 12:11
#116314 #116314
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Doku zum Thema Referenzen und Datenstrukturen:
perlreftut
perlref
perllol
perldsc

perlreftut
perlref
perlreflol
perlrefdsc

Btw: Crosspost:
http://perlboard.de/cgi-bin/perlboard.pl?action=sh...
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
roooot
 2008-11-17 13:22
#116316 #116316
User since
2008-03-03
276 Artikel
BenutzerIn
[default_avatar]
Mal davon abgesehen? was macht eine sub { 'test' } denn anderes als einen Fehler zu produzieren?
Viele Grüße :)
Linuxer
 2008-11-17 13:29
#116317 #116317
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
@roooot,

hast Du das ausprobiert bevor Du Deinen Beitrag geschrieben hast?

Code: (dl )
1
2
3
4
5
6
$ perl -wl

$a = sub { 'test' };
print $a->();
^D
test


Code: (dl )
sub { 'test' } 

ist equivalent zu
Code: (dl )
sub { return 'test'; }


Was ist daran ein Fehler?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
pq
 2008-11-17 13:52
#116318 #116318
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
roooot+2008-11-17 12:22:12--
Mal davon abgesehen? was macht eine sub { 'test' } denn anderes als einen Fehler zu produzieren?

lies mal Wiki:perlref "reference to an anonymous subroutine"
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
roooot
 2008-11-17 15:59
#116331 #116331
User since
2008-03-03
276 Artikel
BenutzerIn
[default_avatar]
Hihi peinlich ;)
Viele Grüße :)
<< >> 10 Einträge, 1 Seite



View all threads created 2008-11-17 11:09.