#!/usr/bin/perl use strict; use warnings; use POSIX; sub intlength ($); print "$_: ", intlength($_) , "\n" for (-1_001..-998,-101..101,998..1_001,123_456_789); sub intlength ($) { my $zahl = shift; my $minus = $zahl<0?1:0; return 1 if $zahl == 0; return 2 if $zahl == -1; $zahl = -$zahl if $minus; return POSIX::ceil(log($zahl+1)/log(10)) + $minus; }