[Cologne-pm] 2 hashreferenzen von einer subrutine bearbeiten
Jens Gassmann
jens.gassmann at atomix.de
Thu Sep 22 13:13:57 PDT 2005
Hi,
deine subroutinen geben keine Referenzen zurück,
> sub CreateHash1 {
> $hash1{aa}{bb}=cc;
> $hash2{dd}{ee}=ff;
> return (%hash1,%hash2);
> }
nach
sub CreateHash1 {
$hash1{aa}{bb}=cc;
$hash2{dd}{ee}=ff;
return ( \%hash1, \%hash2);
}
Dann sollte es auch gehen, und immer beachten! das du Hashes nur als
Referenzen übergeben kannst also immer \%hash und nicht %hash, das
gleich gibt dir ein Subroutinenaufruf zurück, also auch $hashref !
Grüsse
Jens
Cem Sakaryali wrote:
> Hallo Jens,
>
> ich bekomme den Inhalt des Hashes nicht geprintet
> wenn ich 2 hashreferenzen von der sub bekomme.
> Auch durch Deine Lösung konnte ich den Inhalt nicht
> printen.
>
>
> Gruss
> Cem
>
>
>
> Ich habe mal ein beispiel gemacht:
>
>
> sub CreateHash1 {
> $hash1{aa}{bb}=cc;
> $hash2{dd}{ee}=ff;
> return (%hash1,%hash2);
> }
>
> sub CreateHash2 {
> $hash1{aa}{bb}=cc;
> return (%hash1);
> }
>
>
> #####################################################funktioniert nicht
> ($parameter,$include) = CreateHash1 ($ARGV[0]);
>
> %hash = %$parameter;
>
> foreach my $i (keys %hash) {
> print "Runname: $i\n";
> foreach my $ii (sort keys %{$hash{$i}}) {
> print "$ii $hash{$i}{$ii}\n";
> }
> }
>
>
> ########################################################funktioniert
> (%hash) = CreateHash2 ($ARGV[0]);
>
> foreach my $i (keys %hash) {
> print "Runname: $i\n";
> foreach my $ii (sort keys %{$hash{$i}}) {
> print "$ii $hash{$i}{$ii}\n";
> }
> }
>
>
>
>
> On Thu, September 22, 2005 21:25, Jens Gassmann wrote:
>
>>Hi,
>>
>>mir ist noch nicht ganz klar was nun nicht läuft?! Wichtig ist das du
>>von der Subroutine immer nur Hash-Referenzen zurück bekommst.
>>
>>
>>
>> > %hash = %$parameter;
>> >
>> > foreach my $i (keys %hash) {
>> > print "Runname: $i\n";
>> > foreach my $ii (sort keys %{$hash{$i}}) {
>> > print "$ii $hash{$i}{$ii}\n";
>> > }
>> > }
>> >
>>
>>kannst du auch so schreiben
>>
>> foreach my $i (keys %$parameter) {
>>
>> print "Runname: $i\n";
>>
>> foreach my $ii (sort keys %{$parameter->{$i}}) {
>>
>> print "$ii $parameter->{$i}{$ii}\n";
>> }
>> }
>>
>>Grüsse
>>jens
>>
>>Cem Sakaryali wrote:
>>
>>>Hallo alle,
>>>
>>>ich versuche gerade 2 hash referenzen die von einer
>>>subrutine kommen zu bearbeiten aber es funtioniert leider
>>>nicht. Dabei handelt es sich um 2dim. hashes die ich in einer
>>>sub erzeuge.
>>>
>>>
>>># aufruf der sub funktion. Zurück kommen 2 hashes
>>> ($parameter,$include) = ReadMatrix ($ARGV[0]);
>>>
>>> %hash = %$parameter;
>>>
>>> foreach my $i (keys %hash) {
>>> print "Runname: $i\n";
>>> foreach my $ii (sort keys %{$hash{$i}}) {
>>> print "$ii $hash{$i}{$ii}\n";
>>> }
>>> }
>>>
>>>
>>>Die Schleife von oben funktioniert aber wenn ich nur ein hash
>>>zurückgebe.
>>>
>>> (%hash) = ReadMatrix ($ARGV[0]);
>>>
>>> foreach my $i (keys %hash) {
>>> print "Runname: $i\n";
>>> foreach my $ii (sort keys %{$hash{$i}}) {
>>> print "$ii $hash{$i}{$ii}\n";
>>> }
>>> }
>>>
>>>
>>>Hat einer von euch eine Idee, was ich falsch mache?
>>>
>>>Gruss
>>>Cem
>>>
>>>_______________________________________________
>>>Cologne-pm mailing list
>>>Cologne-pm at pm.org
>>>http://mail.pm.org/mailman/listinfo/cologne-pm
>>
>>_______________________________________________
>>Cologne-pm mailing list
>>Cologne-pm at pm.org
>>http://mail.pm.org/mailman/listinfo/cologne-pm
>>
>
>
>
> _______________________________________________
> Cologne-pm mailing list
> Cologne-pm at pm.org
> http://mail.pm.org/mailman/listinfo/cologne-pm
More information about the Cologne-pm
mailing list