Schrift
[thread]11846[/thread]

Referenzen

Leser: 3


<< >> 4 Einträge, 1 Seite
moritz
 2008-05-20 12:11
#109973 #109973
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
pktm+2008-05-20 09:52:41--
Wie mache ich das, dass $p per Referenz modifiziert wird?


Was ist das denn für eine Referenz?

Code: (dl )
1
2
3
Hash:  $p->{key} = $rhs;
Array: $p->[$key] = $rhs;
Skalar: $$p = $rhs;
pktm
 2008-05-20 11:52
#109975 #109975
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich stehe gerade etwas auf dem Schlauch.
Wenn ich eine Methode habe:
Code: (dl )
1
2
3
4
5
6
sub x {
my $p = shift;
for( my $i = 0; $i < 42; $i++ ) {
$p->[$i]->{'soekey'} = 'some_value';
}
}


Wie mache ich das, dass $p per Referenz modifiziert wird?

Wenn ich es mit einer foreach-Schleife mache geht es:
Code: (dl )
1
2
3
4
5
6
sub x {
my $p = shift;
foreach my $x ( @{$p} ) {
$$x{'soekey'} = 'some_value';
}
}


Aber, irgendwie mag das mit den Sachen die ich da probiert habe nicht gehen. Einfach ein $ mehr davor funktioniert nämlich nicht :)

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2008-05-20 12:14
#109978 #109978
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gibt es Fehlermeldungen? Prinzipiell sollte es nämlich so gehen wie Du das gemacht hast:

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

use strict;
use warnings;
use Data::Dumper;

my @array = (
  { test => 1, test2 => 3},{ test => 1, test2 => 3},
  { test => 1, test2 => 3},{ test => 1, test2 => 3}
);

print Dumper \@array;

x(\@array);

print Dumper \@array;

sub x{
   my $p = shift;
   for my $i ( 0..3 ){
      $p->[$i]->{test2} = 'etwas anderes';
   }
}
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
C:\>perl test.pl
$VAR1 = [
{
'test' => 1,
'test2' => 3
},
{
'test' => 1,
'test2' => 3
},
{
'test' => 1,
'test2' => 3
},
{
'test' => 1,
'test2' => 3
}
];
$VAR1 = [
{
'test' => 1,
'test2' => 'etwas anderes'
},
{
'test' => 1,
'test2' => 'etwas anderes'
},
{
'test' => 1,
'test2' => 'etwas anderes'
},
{
'test' => 1,
'test2' => 'etwas anderes'
}
];
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/
pktm
 2008-05-20 12:31
#109982 #109982
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Oh, damit!
Es geht tatsächlich :-s Ich hab nur die Ausgabe an der falschen Stelle gemacht.
Ein klassicher Fall von: Fehler, die die Welt nicht braucht!
http://www.intergastro-service.de (mein erstes CMS :) )
<< >> 4 Einträge, 1 Seite



View all threads created 2008-05-20 11:52.