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

NAME

Sub::Multi::Tiny::Util - Internal utilities for Sub::Multi::Tiny

SYNOPSIS

Used by Sub::Multi::Tiny.

VARIABLES

$VERBOSE

Set this truthy for extra debug output. Automatically set to 1 if the environment variable SUB_MULTI_TINY_VERBOSE has a truthy value.

FUNCTIONS

_croak

As "croak" in Carp, but lazily loads Carp.

_carp

As "carp" in Carp, but lazily loads Carp.

_line_mark_string

Add a #line directive to a string. Usage:

    my $str = _line_mark_string <<EOT ;
    $contents
    EOT

or

    my $str = _line_mark_string __FILE__, __LINE__, <<EOT ;
    $contents
    EOT

In the first form, information from caller will be used for the filename and line number.

The #line directive will point to the line after the _line_mark_string invocation, i.e., the first line of <C$contents>. Generally, $contents will be source code, although this is not required.

$contents must be defined, but can be empty.

_hlog

Log information if "$VERBOSE" is set. Usage:

    _hlog { <list of things to log> } [optional min verbosity level (default 1)];

The items in the list are joined by ' ' on output, and a '\n' is added. Each line is prefixed with '# ' for the benefit of test runs.

The list is in {} so that it won't be evaluated if logging is turned off. It is a full block, so you can run arbitrary code to decide what to log. If the block returns an empty list, _hlog will not produce any output. However, if the block returns at least one element, _hlog will produce at least a '# '.

The message will be output only if "$VERBOSE" is at least the given minimum verbosity level (1 by default).

If $VERBOSE > 2, the filename and line from which _hlog was called will also be printed.

AUTHOR

Chris White <cxw@cpan.org>

LICENSE

Copyright (C) 2019 Chris White <cxw@cpan.org>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.