Thread Problem Numerisch String Literal (14 answers)
Opened by Oliver at 2013-01-07 23:11

thomas38
 2013-01-08 00:10
#164746 #164746
User since
2012-11-04
30 Artikel
BenutzerIn
[default_avatar]
Es ist nicht klar, was Du möchtest.
Mit "Chatdirector" kann ich nichts anfangen.

Ich aktiviere den Glaskugelmodus:

Code (perl): (dl )
$c->addBarLayer($data2);

Im ersten Codefragment erwartet als Argument "$data2" eine Array-Referenz.
Deshalb funktioniert es, oder?
Hinweis: Die eckigen Klammern machen aus der Liste eine anonyme Referenz auf ein Array.

Aber im zweiten Codefragment ist "$data3" ein Skalar (also weder ein Array, noch eine Referenz) und enthält vermutlich den Wert
"48, 94, 130, 6", welcher natürlich kein Integer ist (Integer enthalten keine ZEichen, wie " " oder ",".
Vermutlich deshalb erscheint die Fehlermeldung.

Die Ursache ist, dass Du in der for-Schleife einen Skalar zusammenbaust, statt eines Array.
Elemente eines Arrays werden z.B. mit push(@arrayname,LISTE) am Ende hinzugefügt. Wird ein Array angesprochen, ist ein '@' davor zu schreiben. Wird nur ein Element eines Array benutzt, schreibe '$' vor dem Namen und [INDEX] danach (Beispiel: $array[0].

Gehe ich Recht in der Annahme, dass die ersten beiden Elemente von '$data3' entfernt werden sollen?
Falls ja, ist dieser Code sicher hilfreich:
("myfunc" bitte durch "$c->addBarLayer" ersetzen)
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
use strict;

my @data = ( 5, 9, 12, 172, 1, 33); # Numerische Werte benötigen kein ""
my @data3; # Leeres Array

push(@data3,@data); # Array-Elemente von '@data' an '@data3' anhaengen

# Die ersten beiden Elemente aus '@data3' entfernen
shift @data3;
shift @data3;

myfunc([@data3]); # anonyme Referenz an Funktion oder Methode übergeben


sub myfunc
{
 my $ref=shift;
 
 foreach my $entry ( @$ref)
 {
  print "ENTRY=$entry\n";
 }
}


Ausgabe:
Code: (dl )
1
2
3
4
ENTRY=12
ENTRY=172
ENTRY=1
ENTRY=33

View full thread Problem Numerisch String Literal