[quote=jan,22.05.2004, 22:42]
aber der regexp ist offensichtlich schneller...
[/quote]
Aber nur, so lange deine Regex auf nur 
eine einzelne Ziffer prueft. Das Ergebnis kehrt sich um, wenn wirklich auf Zahlen (d.h. mehrere Ziffern hintereinander) getestet wird.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
~/perl/test> cat nurzahlen.pl
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw/cmpthese/;
cmpthese(-5, {
    regexpZiffer => sub { my $var = '1555000000'; my $onlydigits = 1 if($var =~ m/^\d$/);},
    regexpStern  => sub { my $var = '1555000000'; my $onlydigits = 1 if($var =~ m/^\d*$/);},
    regexpPlus   => sub { my $var = '1555000000'; my $onlydigits = 1 if($var =~ m/^\d+$/);},
    regexpInv    => sub { my $var = '1555000000'; my $onlydigits = 1 unless ($var =~ m/\D/);},
    inttest      => sub { my $var = '1555000000'; my $onlydigits = 1 if(int($var) eq $var);},
});
~/perl/test> ./nurzahlen.pl
                  Rate regexpStern regexpPlus    inttest  regexpInv regexpZiffer
regexpStern  1049899/s          --        -2%        -4%       -28%         -37%
regexpPlus   1069469/s          2%         --        -2%       -27%         -36%
inttest      1096502/s          4%         3%         --       -25%         -35%
regexpInv    1459240/s         39%        36%        33%         --         -13%
regexpZiffer 1678905/s         60%        57%        53%        15%           --
 
Der schnellste Test (nach dem auf einzelne Ziffern) ist also der auf eine Nicht-Ziffer, gefolgt vom Vergleich mit int().
Letzterer hat aber einen anderen Nachteil: Er funktioniert nicht, wenn die Ziffernfolge mit einer Null anfaengt.