Perl: numerischen Kontext erzwingen

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Perl: numerischen Kontext erzwingen
Hi,

ich will prinzipiell Warnungen aktiviert lassen (in dem Fall mit dem -w-Switch), aber folgende Warnung nicht mehr sehen:

Argument "xxx" isn't numeric in addition (+) at [...]

Wie kann ich Perl dazu bringen? Kann ich irgendwie sagen, dass der Interpreter so arbeiten soll wie immer (indem er z. b. von “xxx3.55yyy” die x und y wegmacht), aber sich in dem Fall nicht beschweren soll? Ich stelle mir vor, dass es so etwas wie numeric () in Anlehnung zu scalar () gibt, damit der Interpreter weiss, dass ich weiss, was ich tue…

Danke!


also so ein numeric gibts in perl glaub nicht. am besten stellst du sicher, dass in deiner variablen ne zahl steht, zb mit /(\d+)/$1/
ansonsten schau mal in www.cpan.org nach, da gibts ALLES!


THX,

das mit der RegExp hatte ich mir auch schon ueberlegt, aber so simpel wie dein Vorschlag ist es nicht - weil es z. B. auch Kommazahlen gibt. Ausserdem macht Perl es ja intern, warum sollte ich das nicht nutzen?

Ansonsten hast du Recht, im Notfall mache ich es ueber eine entsprechende RegExp…


puh, mein perl muss eingerostet sein …
wo macht er denn aus “xxx3yyy” eine zahl? ich habs nur mit strings geschafft, bei denen die zahl ab position 0 im string steht. (also z.b. “3yyy”)

guck doch mal nach perldoc -q integer :slight_smile:


OK, so genau ausprobiert habe ich es nicht, aber ich glaube dir natuerlich.

Ausserdem habe ich gerade festgestellt, dass bei mir in den betreffenden Feldern entweder eine normale Zahl ohne Buchstaben steht oder nur Buchstaben. Deshalb ueberpruefe ich jetzt einfach, ob ein Digit vorkommt - wenn ja, dann wird die Zahl verwendet - wenn nein, dann wird Null verwendet.

Trotzdem danke fuer die Tips!