https://github.com/kfly8/syntax-keyword-assert
assert keyword for Perl with zero runtime cost in production
https://github.com/kfly8/syntax-keyword-assert
assert perl
Last synced: 4 months ago
JSON representation
assert keyword for Perl with zero runtime cost in production
- Host: GitHub
- URL: https://github.com/kfly8/syntax-keyword-assert
- Owner: kfly8
- License: other
- Created: 2024-08-11T14:30:00.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-12-22T01:10:17.000Z (7 months ago)
- Last Synced: 2025-03-13T00:18:13.951Z (4 months ago)
- Topics: assert, perl
- Language: Perl
- Homepage:
- Size: 70.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: Changes
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/kfly8/Syntax-Keyword-Assert/actions) [](https://coveralls.io/r/kfly8/Syntax-Keyword-Assert?branch=main) [](https://metacpan.org/release/Syntax-Keyword-Assert)
# NAMESyntax::Keyword::Assert - assert keyword for Perl with zero runtime cost
# SYNOPSIS
```perl
use Syntax::Keyword::Assert;my $obj = bless {}, "Foo";
assert($obj isa "Bar");
# => Assertion failed (Foo=HASH(0x11e022818) isa "Bar")
```# DESCRIPTION
Syntax::Keyword::Assert provides a syntax extension for Perl that introduces a `assert` keyword.
By default assertions are enabled, but can be disabled by setting `$ENV{PERL_ASSERT_ENABLED}` to false before this module is loaded:
```
BEGIN { $ENV{PERL_ASSERT_ENABLED} = 0 } # Disable assertions
```When assertions are disabled, the `assert` are completely ignored at compile phase, resulting in zero runtime cost. This makes Syntax::Keyword::Assert ideal for use in production environments, as it does not introduce any performance penalties when assertions are not needed.
# KEYWORDS
## assert
```
assert(EXPR)
```If EXPR is truthy in scalar context, then happens nothing. Otherwise, it dies with a user-friendly error message.
Here are some examples:
```perl
assert("apple" eq "banana"); # => Assertion failed ("apple" eq "banana")
assert(123 != 123); # => Assertion failed (123 != 123)
assert(1 > 10); # => Assertion failed (1 > 10)
```# SEE ALSO
- [PerlX::Assert](https://metacpan.org/pod/PerlX%3A%3AAssert)
This module also uses keyword plugin, but it depends on [Keyword::Simple](https://metacpan.org/pod/Keyword%3A%3ASimple). And this module's error message does not include the failed expression.
- [Devel::Assert](https://metacpan.org/pod/Devel%3A%3AAssert)
This module provides a similar functionality, but it dose not use a keyword plugin.
# LICENSE
Copyright (C) kobaken.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.# AUTHOR
kobaken