The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
package Acme::ChuckNorris;

use strict;
use warnings;

$Acme::ChuckNorris::VERSION = '0.3';

sub import {
    no strict 'refs';    ## no critic
    *{ caller() . '::round_house_kick_to_the_perl' } = \&round_house_kick_to_the_perl;
    *{ caller() . '::round_house_kick_to_the_text' } = \&round_house_kick_to_the_text;
}

my %mostly_defaults = (
    'Regex'  => 1,
    'Binary' => 0,
);

my %defaults_overridable = (
    'Gap'            => 1,
    'InformHandler'  => sub { },
    'TrailingSpaces' => 1,
);

sub round_house_kick_to_the_text {
    require Acme::EyeDrops;
    return Acme::EyeDrops::sightly(
        {
            %defaults_overridable,    # allow caller to override these in @_
            @_[ 1 .. $#_ ],
            ( ref( $_[0] ) eq 'SCALAR' ? ( 'SourceString' => ${ $_[0] } ) : ref( $_[0] ) ? ( 'SourceHandle' => $_[0] ) : ( 'SourceFile' => $_[0] ) ),
            'ShapeString' => join( '', <DATA> ),
            'Shape'       => undef,
            %mostly_defaults,         # not overridable
            'Print' => 1,
        }
    );
}

sub round_house_kick_to_the_perl {
    require Acme::EyeDrops;
    return Acme::EyeDrops::sightly(
        {

            # allow caller to override the below options in @_
            %defaults_overridable,
            %mostly_defaults,    # overridable
            'TrapEvalDie' => 1,
            'TrapWarn'    => 1,

            # allow caller to override the above options in @_
            @_[ 1 .. $#_ ],
            ( ref( $_[0] ) eq 'SCALAR' ? ( 'SourceString' => ${ $_[0] } ) : ref( $_[0] ) ? ( 'SourceHandle' => $_[0] ) : ( 'SourceFile' => $_[0] ) ),
            'ShapeString' => join( '', <DATA> ),
            'Shape'       => undef,
        }
    );
}

'When Chuck Norris is SCUBA diving and surfaces too fast the ocean gets the bends.';    # return true, so very very true

__DATA__
                                                                                                                                                
                                                                  ################                                                              
                                                                ######################                                                          
                                                        ################################                                                        
                                                    ####################################  ##                                                    
                                                  ############################################                                                  
                                                ##########################################  ##                                                  
                                              ##################################################                                                
                                              ##################################################                                                
                                            ######################################################                                              
                                            ######################################################                                              
                                            ######################################################                                              
                                            ########################################################                                            
                                            ########################################################                                            
                                            ########################################################                                            
                                          ################################  ##########################                                          
                                            ##########################            ####################                                          
                                            ######################  ##            ####################                                          
                                            ######################                  ####################                                        
                                            ######################                  ####################                                        
                                            ############                              ##################                                        
                                              ################                        ##################                                        
                                              ##########                              ##################                                        
                                                ############  ##############            ########  ######                                        
        ####                                    ############  ##############              ##############                                        
        ######                                  ############    ############          ####        ####                                          
          ######                                ############    ####                  ####      ######                                          
          ######                                ############                          ####      ######                                          
            ######                              ####    ####                          ####    ######                                            
            ########                            ####    ####                          ####    ######                                            
              ##########                          ##    ##                          ######  ######                                              
              ############                        ##  ####          ##                ####  ######                                              
                ##########                        ########        ##                  ##                                                        
              ##############    ########            ######  ######                ######      ##                                                
                ##################      ##          ############                ########      ####                                              
                  ######  ##      ####  ##          ########################  ##########        ####                                            
                  ############        ##################################################      ######                                            
                  ##############    ##############################    ################        ########                                          
                  ##############    ############################        ############        ##########                                          
                  ################    ##############################################        ##########                                          
                    ################    ############################################      ##############                                        
                    ################    ############################################    ##################                                      
                      ############  ######  ########################################  ########################                                  
                      ####################  ####################################################################                                
                        ##################  ######################################################################                              
                        ####################  ########################################################################                          
                          ##############  ##      ######################################################################                        
                          ####################    ######################################################################                        
                          ################  ##      ######################################################################                      
                          ##################  ##      ####################################################################                      
                        ##########################    ######################################################################                    
                        ######################  ##      ########################################################################                
                        ##################    ##  ##      ######################################################################                
                        ##################  ##  ######    ########################################################################              
                        ##############################      ########################################################################            
                        ########################  ##  ##    ########################################################################            
                      ############################    ######  ########################################################################          
                    ######################  ######  ##########  ##################################################          ##########          
  ##                ####################      ######  ##########################################################              ########          
######            ######################      ##################  ##########################################                    ######          
##    ##          ######################        ##################  ######################################                      ######          
##    ##        ################  ########    ####################  ####################################                        ######          
  ##  ##      ####################    ####    ##  ##############      ################################                          ######          
  ##  ####    ##############  ######            ##  ######      ##      ############################                              ####          
  ##      ##########################            ########  ##  ##  ##    ##########################                                ####          
  ##      ############  ############              ##  ########    ####    ######################                                  ##            
  ########        ####  ########  ##                ########        ##    ######################                                ####            
  ####                  ########                    ##########    ##  ##  ######################                                ####            
  ####      ####      ##########                    ############################################                                ##              
######    ####        ########                      ##############  ##  ##  ######    ##########                                ##              
############            ######                      ################  ############      ######                                  ##              
##########              ######                      ########################            ####                                    ##              
##########              ########                    ##################  ##          ##  ####                                  ##                
##############          ########                    ####################                ##                                    ##                
############      ####  ##########                  ##################                ####                                    ##                
############      ##    ##########                    ##################            ######                                    ##                
############    ####    ##    ######                    ##########                                                            ##                
  ################                ####                                                                                      ##                  
    ##############    ##            ####                                                                                    ##                  
                ######