Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5835[/thread]

6 Arrays in Modul übergeben



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
-Sven-
 2003-10-20 14:53
#65336 #65336
User since
2003-10-15
25 Artikel
BenutzerIn
[default_avatar]
Hi habe folgendes Problem.

Ich habe 6 Arrays. Die will ich alle in ein Modul übergeben.

Modul.pm wurde mit use eingebunden, enthält 1; und ist wie ne Sub.

Nun will ich im Mainscript die Sub aus dem Modul aufrufen.

&modul(@1,@2,@3 ..)

Problem: Variablen werden nicht erkannt vom Modul.

Habs auch schon probiert mit :

&modul(@1,@2,@3..)

-> sub modul(@1_1,@2_1,@3_1...

funzt net, wisst ihr vielleicht ne Lösung.

Danke im vorraus
[E|B]
 2003-10-20 15:04
#65337 #65337
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Übergib der Substitution doch eine Referenz!
Wie holst du in der eigentlichen Modul-Sub denn die Parameter?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
format_c
 2003-10-20 15:04
#65338 #65338
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=-Sven-,20.10.2003, 12:53]&modul(@1,@2,@3 ..)[/quote]
So wirst du es nicht schaffen wieder die 6 Array getrennt heraus zu bekommen.
Verwendie lieber Referenzen auf das besagte Array:

ImModul:
Code: (dl )
1
2
3
4
5
6
sub (\@\@\@\@\@\@) {
my $arrayref1 = shift;
my $arrayref2 = shift;
....
}
1;


Als Aufruf:
Code: (dl )
routinenname(\@array1,\@array2,...);

Wenn du das so nicht meinst, beschreib bitte dein problem genauer.

Gruß Alex
-Sven-
 2003-10-20 15:07
#65339 #65339
User since
2003-10-15
25 Artikel
BenutzerIn
[default_avatar]
ist ok Danke Alex
pq
 2003-10-20 16:34
#65340 #65340
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
@format_c: entweder man nimmt prototypen oder man übergibt
referenzen.
Code: (dl )
1
2
3
4
5
6
7
8
$ perl -wle'
sub test (\@) {
 print "(@_)";
}
@a=qw(a b c);
test(\@a)'
Type of arg 1 to main::test must be array (not reference constructor) at -e line 5, at end of line
Execution of -e aborted due to compilation errors.
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
Crian
 2003-10-20 16:40
#65341 #65341
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Warum? Man kann doch als Prototyp ($$$$$$) angeben und 6 Referenzen übergeben?!
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
 2003-10-20 17:08
#65342 #65342
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Crian,20.10.2003, 14:40]Warum? Man kann doch als Prototyp ($$$$$$) angeben und 6 Referenzen übergeben?![/quote]
gut, aber format_c hat als prototyp (\@\@\@\@\@\@) genommen
und referenzen übergeben. das geht halt nicht.

vorsicht übrigens bei OO-modulen - da bringen prototypen nichts...
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
format_c
 2003-10-20 17:31
#65343 #65343
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
OK sorry. Da war ich wohl etwas schnell. Natürlich muss es $$$$$$ heißen.

Gruß Alex
Crian
 2003-10-20 17:55
#65344 #65344
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
[quote=pq,20.10.2003, 15:08]vorsicht übrigens bei OO-modulen - da bringen prototypen nichts...[/quote]
Warum? Ich hab in meinen OO-Modulen auch Prototypen drin, man muss natürlich auf das "self" als ersten Parameter achten...

Oder werden die Prototypen einfach ignoriert?
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
 2003-10-20 18:06
#65345 #65345
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Crian,20.10.2003, 15:55]Warum? Ich hab in meinen OO-Modulen auch Prototypen drin, man muss natürlich auf das "self" als ersten Parameter achten...

Oder werden die Prototypen einfach ignoriert?[/quote]
ein aufruf wie
$object->method(...)
ignoriert prototypen.
Package::method($object, ...)
beachtet prototypen, aber das ist dann nicht mehr wirklich
objekt-orientiert...
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 >| >> 11 Einträge, 2 Seiten



View all threads created 2003-10-20 14:53.