William schreef: > [*attribution dammit*] Ruud: >> There is no real way to test if a value inside a variable has a >> numeric "personality". Variables can have multiple "personalities", >> each with there own binary value. >> >> So maybe the problem just comes from the leading zeroes that your >> sprintf format added? > > Not exactly from the leading zeros, > > use Data::Dumper; > my $numStr = sprintf("%4d", 1234); > print (Dumper $numStr), "\n"; > > my $numStr = sprintf("%05d", 1234); > print (Dumper $numStr), "\n"; > > my $num = sprintf("%05d", 1234); > $num += 0; > print (Dumper $num), "\n"; > > > use Language::Prolog::Types::overload; > > use Language::Prolog::Types qw(:ctors); > > print prolog_functor('foo', $numStr), "\n"; > print prolog_functor('foo', $num), "\n"; > > > $VAR1 = '1234'; > $VAR1 = '01234'; > $VAR1 = 1234; > foo(01234) > foo(1234) > > > As you can see the last of $VAR1 does not have single quote, so it's > really in number data type.
It is not "in number data type", it is merely available as numeric. (as I have said before) > I think so far, adding zero solve the problem. That is indeed one of the ways to add a numeric personality to a variable. Testing with a numeric operator also "works", see below: $ perl -Mstrict -Mwarnings -MData::Dumper -wle' my $s = "1234"; print Dumper($s); print 1 if $s == 0; print Dumper($s); print 2 if $s eq "1234"; print Dumper($s); ' $VAR1 = '1234'; $VAR1 = 1234; 2 $VAR1 = 1234; That Data::Dumper prefers to print the numeric face of the variable, if available, is a matter of choice inside the code of Data::Dumper. Maybe the other modules that you use, have Data::Dumper embedded? -- Affijn, Ruud "Gewoon is een tijger." -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/