Schrift
[thread]10286[/thread]

absoluter Anfänger: Referenzen



<< >> 4 Einträge, 1 Seite
uchi_mata
 2007-09-01 00:14
#98948 #98948
User since
2007-09-01
3 Artikel
BenutzerIn
[default_avatar]
Hallo,

bin ein blutiger Perl-Anfänger, und habe direkt ein Problem mit Referenzen, an dem ich schon eine ganze Weile herumbastle. Dazu erstmal ein Stück Code:


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl -w

use strict;
use warnings;

main();

sub main {
my %hash = ();
$hash{'check'} = 'klappt';
test(\%hash);
print "2: $hash{'0'}\n";
}

sub test {
my ($ref) = shift;
my %hash = %$ref;
print "dref: $hash{'check'}\n";
$hash{'0'} = 'klappt nicht';
print "1: $hash{'0'}\n";
}


Ich will im Prinzip nur eine Referenz an eine Funktion übergeben, in dieser den Inhalt verändern, und auf diesen veränderten Inhalt in der aufrufenden Funktion zugreifen.

Allerdings bekomme ich bei diesem Punkt
Code: (dl )
print "2: $hash{'0'}\n";


immer nur ein

Code: (dl )
Use of uninitialized value in concatenation (.) or string at ref.pl line 12.


Ist garantiert trivial, aber ich komme einfach nicht drauf, was falsch ist. Könnte mir das kurz jemand verraten?

Danke schonmal, Gruss,

Matthias
pktm
 2007-09-01 00:26
#98949 #98949
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Mit my %hash = %$ref; legst du (glaube ich, nicht schlagen wenns falsch ist) eine Kopie der Referanz an. Wenn du an den referenzierten Inhalten etwas ändern willst musst du diese auch als solche ansprechen. Das kannst du z.B. so machen:
Code: (dl )
1
2
3
4
5
6
7
sub test {
my $href = shift;

print "dref: $href->{'check'}\n";
$href->{'0'} = 'klappt nicht';
print "1: $href->{'0'}\n";
}


Grüße, pktm

Edit: Buchstaben vergessen...
http://www.intergastro-service.de (mein erstes CMS :) )
uchi_mata
 2007-09-01 00:30
#98950 #98950
User since
2007-09-01
3 Artikel
BenutzerIn
[default_avatar]
MEIN RETTER!!! :-)

Vielen Dank, wusste doch dass es so etwas triviales ist.

Genial... das hat mich jetzt echt beschäftigt ;-)

Gruss und Danke,
Matthias
renee
 2007-09-01 17:49
#98970 #98970
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wiki:perlreftut (auf deutsch)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 4 Einträge, 1 Seite



View all threads created 2007-09-01 00:14.