Thread Typisiert Perl in pack()? (3 answers)
Opened by rosti at 2017-01-24 10:35

betterworld
 2017-01-24 19:28
#185924 #185924
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Das hat eigentlich nichts mit pack zu tun. Wichtig ist nur, dass du einen Integer haben willst. Es ist richtig, dass man in Perl auch Strings als Integer benutzen kann, jedoch hat das seine Grenzen. Und zwar kann man nur solche Strings nehmen, die Dezimalzahlen enthalten. Hex-Strings hingegen sind für Perl einfach nur Strings und können nicht als Integer benutzt werden.

So kannst du die Fehlermeldung auch ohne pack bekommen:
Code (perl): (dl )
1
2
3
print 2 * "0x85";  # Erzeugt Warnung und ergibt "0"
print 2 * "133";  # Keine Warnung und ergibt "266"
print 2 * 0x85;  # Keine Warnung und ergibt "266"


Abgesehen davon scheint dein Beispiel nicht richtig zu sein. Warum stehen zwei Zeilen in der Ausgabe, wenn im Code nur einmal "print" vorkommt? Und was genau steht in der Variable $address eigentlich drin bei dir? Wenn ich das ausprobiere mit $address = "0x1A85", dann steht in $b1 und $b2 hinterher jeweils 0 drin. Das heißt, es läuft nicht nur nicht "sauber", sondern es funktioniert schlicht überhaupt nicht. Ist ja auch klar, denn siehe obige Erklärung.
Last edited: 2017-01-24 19:35:21 +0100 (CET)

View full thread Typisiert Perl in pack()?