in reply to Re: Numification of strings
in thread Numification of strings
Perl is more generous and gives warnings if they are enabled. This will give a warning:#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char *digits="0123456789"; char x[] = "2abc"; int result = atoi(x); printf ("case a) string %s is %d as decimal\n",x,result); if (strlen(x) == 0 || (strspn(x,digits) != strlen(x))) printf ("case b) %s is NOT a simple positive integer!\n" " there are either no digits or non-digits\n", x); char y[] = ""; int result_y = atoi(y); printf ("case c) a null string results in %d\n",result_y); return 0; } /* prints: case a) string 2abc is 2 as decimal case b) 2abc is NOT a simple positive integer! there are either no digits or non-digits case c) a null string results in 0 */
You can check yourself if \D exists in string or if null string. Otherwise Perl will do the "best that it can".#!/usr/bin/perl -w use strict; my $a = "23B"; $a +=0; print $a;
Also of note is that in Perl, everything is a string a string that looks like a number is still a string until used in a numeric
context. Consider this:
This is a "trick" that I sometimes use to delete leading zeroes.my $x = "00012"; print "$x\n"; $x+=0; print "$x\n"; ##prints #00012 #12
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: Numification of strings
by morgon (Priest) on Aug 02, 2010 at 18:01 UTC | |
by ww (Archbishop) on Aug 02, 2010 at 18:27 UTC | |
by morgon (Priest) on Aug 02, 2010 at 19:06 UTC | |
by Marshall (Canon) on Aug 02, 2010 at 18:11 UTC |