Question: Wie dereferenziert ihr? | |
21 voter(s) so far |
1 2 3 4
my $hashref = { foo => "oof" }; say $hashref->{foo}; say $$hashref{foo}; say ${$hashref}{foo};
1 2 3 4
my $arrayref = ["a", "b", "c"]; say $arrayref->[0]; say $$arrayref[0]; say ${$arrayref}[0];
1 2 3
@{ $hashref }{ qw( key1 key2 ) }; # anstatt $hashref->{key1}, $hashref->{key2};
1 2 3 4 5 6 7 8 9
my $hashref = { a => 1, b => { c => 897, d => 584, }, }; say $hashref->{b}->{d}; say $hashref->{b}{d}; # das mag ich persönlich nicht so sehr
2014-08-10T14:55:57 hlubenowIch vermeide Referenzen, wenn möglich. Wenn eine Referenz dennoch erforderlich ist, gönne ich mir beim Dereferenzieren eine neue Hash/Array-Variable, um dann auf der einfacheren Ebene weiterarbeiten zu können:
[...]
QuoteWenn der Dref-Bandwurm zu arg lang wird, selbst mit -> in nächste Zeilen untereinander, benutze ich "Zwischenvariablen", um zwischenzuspeichern.
1 2 3 4 5 6 7
sub control{ my $self = shift; # wir könnten jetzt über $self->{PARAMS} # auf die Parameter zugreifen # die Abstraktion sieht jedoch den Aufruf einer weiteren Methode vor: $self->param(); }
1
2
3
4
if (defined ($locke->{'Information_m_s_b'})){
$line=$S->{$log4check}->{$ruleset}->{$sonderlocke}->{$x}->{'line'};
$log->{'mess'}->{'Special'}=$locke->{'Information_m_s_b'};
}
$value=$data->{$param->{$keys->{param}->{$key}->{name}}->{$key}->{name}}->{$key}->{value}
$value=$data->{ $param->{ $keys->{param}{$key}{name} }{$key}{name} }{$key}{value}
1 2 3 4 5
$value = $data->{ $param->{ $keys->{param}->{ $key }->{name} }->{ $key }->{name} }->{ $key }->{value}