in reply to integer operations

Here's a little ceiling function, if you don't feel like using POSIX:
sub ceil { my $n = shift; int($n) + ($n > int($n)); }

Caution: Contents may have been coded under pressure.

Replies are listed 'Best First'.
Re^2: integer operations
by DrHyde (Prior) on Mar 02, 2005 at 09:28 UTC
    Why would anyone not want to use POSIX? It's a core module, and is damned useful. It's also woefully underused.
      Indeed. Writing your own is more typing, and it's slower as well. About the only reason I can think of is wanting to avoid the loading of POSIX. But if that's significant, you probably want to inline your ceiling functionality anyway.
      #!/usr/bin/perl use strict; use warnings; use POSIX 'ceil'; use Benchmark 'cmpthese'; sub my_ceil { my $n = shift; int($n) + ($n > int($n)) } our @tries = map {-100 + rand 50} 1 .. 1_000; cmpthese -1, { ceil => '@a = map { ceil($_)} @tries', own => '@b = map {my_ceil($_)} @tries', inline => '@c = map {int($_) + ($_ > int($_))} @tries', }; __END__ Rate own ceil inline own 355/s -- -52% -54% ceil 737/s 107% -- -4% inline 767/s 116% 4% --