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

referenzieren / dereferenzieren: verständnisproblem

Leser: 3


<< >> 6 Einträge, 1 Seite
supersucker
 2005-06-28 15:43
#55768 #55768
User since
2005-03-17
118 Artikel
BenutzerIn
[default_avatar]
hi,

ich hab ein kleines verständnis-problem mit referenzen...

angenommen mal ich habe:

Code: (dl )
1
2
my @array = qw(hallo schöne welt);
my $arrayref = \@array;


was ist denn dann bei der dereferenzierung der unterschied zwischen folgenden drei möglichkeiten:

Code: (dl )
1
2
3
4
5
$ $arrayref[0] = "hi";

$ { $arrayref } [0] = "hi";

$arrayref -> [0] = "hi";


gibt es überhaupt einen unterschied zwischen diesen drei möglichkeiten? wenn ja, wann verwende ich welche?

danke im voraus...
Crian
 2005-06-28 15:49
#55769 #55769
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Ich nehm immer den untersten. Der ist imho am schönsten. Aber das beantwortet Deine Frage natürlich nicht.
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
esskar
 2005-06-28 15:55
#55770 #55770
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
imho unterscheiden sich
Code: (dl )
1
2
3
$ $arrayref[0] = "hi";

$ { $arrayref } [0] = "hi";

nicht. die { } brauchst du nur dann, wenn der ausdruck zusammengesetzt ist, also

Code: (dl )
$ { $das->{ist}->{ein}->{arrayref} } [0]


wenn du aber $ $arrayref wird das komplette Array derefenziert... kostet also mehr "zeit" als einfach ein Element in dem Array mit ->[0] anzusprechen!
Strat
 2005-06-28 18:15
#55771 #55771
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die "offizielle" alte schreibeweise war:
Code: (dl )
${$arrayRef}[0]

da in der klammer nur eins steht, kann man die klammern auch weglassen, also:
Code: (dl )
$$arrayRef[0]

und weil sowas gerade bei komplexeren datenstrukturen ganz schoen haesslich und fehleranfaellig werden kann, hat Larry-sei-dank mal jemand die pfeil-schreibweise eingefuehrt:
Code: (dl )
$arrayRef->[0]

aber sonst ist mir keine unterschied bekannt\n\n

<!--EDIT|Strat|1119968162-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
supersucker
 2005-06-28 20:14
#55772 #55772
User since
2005-03-17
118 Artikel
BenutzerIn
[default_avatar]
danke,

das hat jetzt doch einiges zu meiner erhellung beigetragen.......:-)

finde die untere schreibweise auch am übersichtlichsten
renee
 2005-06-28 21:26
#55773 #55773
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
vielleicht auch mal lesenswert: perlreftut
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/
<< >> 6 Einträge, 1 Seite



View all threads created 2005-06-28 15:43.