Acme-Crap
view release on metacpan or search on metacpan
lib/Acme/Crap.pm view on Meta::CPAN
fallback => 1,
);
sub import {
overload::constant q => sub { my $val = $_[1]; bless \$val, 'Acme::Crap' };
no strict qw( refs );
*{caller().'::crap'} = sub {
local $Acme::Crap::no_negation = 1;
@_ = map {"$_"} @_;
goto &Carp::carp;
}
}
package Acme::Crap::Negated;
sub new {
my ($class, $val) = @_;
bless { val => $val, degree => 1 }, $class;
}
sub value {
my ($self) = @_;
if ($Acme::Crap::no_negation) {
return $self->{degree} == 1 ? ucfirst "$self->{val}!"
: $self->{degree} == 2 ? join q{}, map { ucfirst $_ } split /(\s+)/, "$self->{val}!!"
: uc $self->{val} . '!' x $self->{degree};
}
return !$self->{val} if $self->{degree} % 2;
return !!$self->{val};
}
use overload (
q{!} => sub { my ($self) = @_; $self->{degree}++; return $self; },
q{""} => \&value,
q{0+} => \&value,
( run in 1.442 second using v1.01-cache-2.11-cpan-49f99fa48dc )