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.