Schrift
[thread]6544[/thread]

my (%hash1, %hash2) = &gethash; - geht das?



<< >> 6 Einträge, 1 Seite
Dubu
 2004-08-29 19:46
#49695 #49695
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Subroutinen in Perl koennen nur einen Skalar, eine Referenz oder eine Liste zurueckliefern. Deine Sub liefert eine lange Liste mit den Schluesseln und Werten zweier Hashes zurueck. Diese Liste wird dann beim Aufruf einfach %hash1 zugewiesen, %hash2 bleibt leer.

Loesung: Gib (eine Liste von) zwei Hashreferenzen zurueck.
Dubu
 2004-08-29 20:56
#49696 #49696
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Die Arrayreferenz ist natuerlich nicht extra noetig, man kann gleich zwei Hashreferenzen zurueckgeben:
Code: (dl )
1
2
3
4
5
6
7
8
9
sub returnhash {
my %hash1 = (1 => 3);
my %hash2 = (2 => 5);
return \%hash1, \%hash2;
}

my ($ref1, $ref2) = returnhash();
print $ref1->{1}; # Element "1" aus dem ersten Hash
print $ref2->{2}; # Element "2" aus dem zweiten Hash
Crian
 2004-08-30 11:49
#49697 #49697
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Die Frage hat nix mit CGI zu tun *schieb*
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
x-man
 2004-08-29 19:14
#49698 #49698
User since
2003-09-11
67 Artikel
BenutzerIn
[default_avatar]
Der folgende Code liefert mir nur %hash1. Was ist da falsch?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
sub gethash{
foreach(...){
.......
.......

$hash1{$key} = $wert;
$hash2{$key} = $wert;
}
return(%hash1, %hash2);
}

my(%hash1, %hash2) = &gethash;


Danke Euch!
[E|B]
 2004-08-29 20:17
#49699 #49699
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ein kurzes Beispiel:

Code: (dl )
1
2
3
4
5
6
7
8
9
sub returnhash {
  my %hash1 = (1 => 3);
  my %hash2 = (2 => 5);
  return [\%hash1, \%hash2];
}

my $refs = &returnhash;
print $refs->[0]->{1};   # 1. Array Element, Schlüssel "1"
print $refs->[1]->{2};   # 2. Array Element, Schlüssel "2"
\n\n

<!--EDIT|[E|B]|1093796269-->
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]
x-man
 2004-08-30 07:34
#49700 #49700
User since
2003-09-11
67 Artikel
BenutzerIn
[default_avatar]
Vielen Dank!
<< >> 6 Einträge, 1 Seite



View all threads created 2004-08-29 19:46.