Leser: 21
1 2 3 4 5 6 7
my ($naechster) = ( keys %attach ? (sort {$b <=> $a} keys %attach) : 0 )# hier ein +1 hinter die Klammer wirft "Useless use of sort in scalar context" # und "Use of uninitialized value in addition", warum? ;
2010-04-18T09:08:32 moritzWenn du den größten Wert willst, solltest du auch den größten nehmen
2010-04-18T09:18:35 bianca2010-04-18T09:08:32 moritzWenn du den größten Wert willst, solltest du auch den größten nehmen
Mach ich ja. In diesem Kontext liefert mir mein Code den größten Wert - zumindest ist das bei mir so.
2010-04-18T09:49:06 biancaHab ja dann in der nächsten Zeile $naechster ++ stehen. Dachte halt, man könnte das in einer Zeile
machen.
QuoteAber wie ich das sehe, ist mein Kontext garkein skalarer Kontext sondern Liste?
QuoteIch dachte immer, das ginge danach, was links zugewiesen wird.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use strict;
use warnings;
use 5.010;
sub context {
given (wantarray) {
when (undef) { say "void" };
when (0) { say "scalar" };
when (1) { say "list" };
}
1;
}
my $a = context(); # scalar
my ($b) = context(); # list
my $c = context() + 1; # scalar - wegen des + 1, nicht wegen der Zuweisung
my ($d) = context() + 1; # scalar - wegen des + 1, nicht wegen der Zuweisung
QuoteDa dies in diesem Fall ein einzelner nummerischer Wert - ein String - ist dachte ich, es wäre skalar und man könnte am Ende auch einfach ein +1 hinzufügen.
Liege ich da falsch?
QuoteDen Listenkontext hatte ich bei diesem Konstrukt vermutet:
Hab ich das falsch rum verstanden?
2010-04-18T10:16:31 moritzDu liegst falsch, weil die Addition vor der Zuweisung erfolgt, und daher die Addition den Kontext bestimmt, nicht die Zweisung.