Datentyp ermitteln
Klara
- perl
my $query= CGI->new;
my $zahl = $query->url_param('xyz')
wie kann ich überprüfen, ob $zahl eine ganzzahl ist?
Muss ich dafür ein regex verwenden?
Grüße!
Klara
Hallo Klara!
my $query= CGI->new;
my $zahl = $query->url_param('xyz')
> wie kann ich überprüfen, ob $zahl eine ganzzahl ist?
> Muss ich dafür ein regex verwenden?
Nein. Die Funktion [int()](http://de.selfhtml.org/perl/funktionen/berechnungen.htm#int) dürfte Dir helfen.
Viele Grüße aus Frankfurt/Main,
Patrick
--
![](http://www.atomic-eggs.com/fuernA.jpg)
\_ - jenseits vom delirium - \_
[[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash](http://www.atomic-eggs.com/)]
Nichts ist unmöglich? [Doch!](http://www.atomic-eggs.com/cwi/cwi_4.shtml)
Heute schon ge[gök](http://goek.atomic-eggs.com/goek_goek.html)t?
Die Funktion int() dürfte Dir helfen.
Nein, int ist trügerisch. Es liefert auch bei "gemischten" Strings den Teil bis zum ersten nichtnumerischen Zeichen zurück. Beginnt der String bereits mit einem nichtnumerischen Zeichen, liefert int als Ergebnis 0, das könnte im booleschen Kontext zu falschen Rückschlüssen führen, wenn der User tatsächlich 0 eingegeben hat. Ich halte einen RegExp für die sicherste Variante:
print 'Ganzzahl' if $zahl =~ /^\d+$/;
Ansonsten könnte man auch auf Scalar::Util zurückgreifen, dort looks_like_number, und im Erfolgsfall int anwenden.
Siechfred
Hallo Siechfred!
[int()]
Nein, int ist trügerisch. Es liefert auch bei "gemischten" Strings den Teil bis zum ersten nichtnumerischen Zeichen zurück.
Ups, das habe ich gar nicht bedacht, danke für den Hinweis...
Ich hoffe, Du bleibst uns trotz Deiner Ankündigung im Redforum zumindest bei Perl-Fragen regelmäßig erhalten!
Log-Modul inzwischen erweitert (habe pers. an statfaker auch nichts Neues gemacht...)?
Viele Grüße aus Frankfurt/Main,
Patrick
Moin Moin!
Generell solltest Du im CGI-Context den Taint Mode einschalten. Für die Validierung von Benutzereingaben gibt es fertige Module wie Data::FormValidator, zusammen mit HTML::FillInForm kannst Du dem Benutzer das jeweilige Formular so lange vorausgefüllt vorsetzen, bis alle Daten valide sind.
Für das konkrete Problem hätte auch ein Blick ins Perl Cookbook (ISBN 1-56592-243-3) geholfen, Kapitel 2.1 "Checking Whether a String Is a Valid Number". Für ganze Zahlen reicht /^\d+$/ aus, für Integer muß noch das optionale Vorzeichen dazu: /^-?\d+$/
Alexander