NAME Devel::Assert - assertions for Perl >= 5.14 SYNOPSIS use Devel::Assert; # release mode, won't perform checks assert(3 > 2); use Devel::Assert 'on'; assert(3 > 2); # oops, check your math FEATURES * assert() call and all it's arguments are replaced with no-ops at compile time * not a source filter DESCRIPTION This module provides you with a C-like assert() function - it completely disappears when you don't want it. That's useful to force functions' contracts during development without sacrificing production performance. That's just like tests, but inside your code. sub get_url { my ($self, $url, $cb) = @_; assert length $url; assert(ref($cb) eq 'CODE'); ... } USAGE use Devel::Assert; # import 'assert' function, but doesn't enable it use Devel::Assert 'on'; # import 'assert' function and enable it use Devel::Assert 'global'; # import 'assert' function and enable it in all later 'use Devel::Assert' imports use Devel::Assert::Global; # the same, can be used as perl -MDevel::Assert::Global your_program.pl DISABLING ASSERTIONS To temporary disable assertions you can use the following two options: no Devel::Assert; # or use Devel::Assert 'off'; But note that currently this feature is not lexically scoped. It disables checks right until the next 'use Devel::Assert' statement (whenever it happens). This may be quite counterintuitive. CAVEATS assert() calls in text evals do not respect compile-time mode for the current module, but rather take default mode - 'off', unless 'global' is in effect. If you want them 'on', import Devel::Assert with 'on' flag inside your eval'ed string. SEE ALSO assertions - for perls >= 5.9.0, different syntax (code attributes). Carp::Assert - requires annoying 'if DEBUG' suffix. AUTHOR Sergey Aleynikov COPYRIGHT Copyright (C) 2009, 2015 Sergey Aleynikov LICENSE This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.