1Trace::Mask::Util(3) User Contributed Perl Documentation Trace::Mask::Util(3)
2
3
4
6 Trace::Mask::Util - Utilities for applying stack trace masks.
7
9 This package provides utilities to help you apply masks for stack
10 traces. See Trace::Mask for the specification these utilities follow.
11
12 EXPORTS
13 Note: All exports are optional, you must request them if you want them.
14
15 update_mask($file, $line, $sub, \%mask)
16 Update the mask for the specified $file, $line, and $sub. The mask
17 hashref will be merged into any existing mask. You may use the
18 wildcard string '*' for any 2 of the first 3 arguments. $sub may be
19 coderef, or a fully qualified sub name.
20
21 @errors = validate_mask(\%mask)
22 This will check the mask to ensure it is valid. If the mask is
23 valid an empty list is returned. If there are problems with the
24 mask then a list of error strings will be returned.
25
26 $hr = get_mask($file, $line, $sub)
27 Get the combined mask for the specific file, line and sub. This
28 will be a merger of all applicable masks, including wildcards. $sub
29 may be a coderef, or a fully qualified sub name.
30
31 mask_call(\%mask, $sub)
32 mask_call(\%mask, $sub, @args)
33 This will call $sub with the specified mask and arguments. This
34 will use "goto &$sub" to run your sun without "mask_call()" itself
35 showing up in any stack frames. $sub can be a sub reference, or the
36 name of a sub in the calling package.
37
38 mask_sub(\%mask, $sub)
39 mask_sub(\%mask, $sub, $file)
40 mask_sub(\%mask, $sub, $file, $line)
41 Apply the mask to the specified sub, which can be a coderef, or the
42 name of a sub in the calling package. $file and $line are optional,
43 '*' will be used if you do not specify.
44
45 mask_line(\%mask)
46 mask_line(\%mask, $delta)
47 mask_line(\%mask, $delta, @subs)
48 This will mask calls on the current or current + $delta line of the
49 calling package. Optionally uo can provide a list of subs to mask,
50 '*' is used if none are specified.
51
52 This is useful if you wish to apply a mask to multiple calls on a
53 specific line:
54
55 sub try(&) {
56 my $code = shift;
57
58 # Hides both the eval, and the anon-block call
59 BEGIN { mask_line({hide => 1}, 1) }
60 my $ok = eval { $code->(); 1 };
61
62 ...
63 }
64
65 It is best to run this in a "BEGIN {...}" block so that the mask is
66 added at compile time, instead of being re-added every time your
67 code is run.
68
69 mask_frame(%mask)
70 This applies a mask to the currently running stack frame, that is
71 whatever sub you use it in. This applies no matter where/how your
72 sub was called.
73
75 The source code repository for Trace-Mask can be found at
76 http://github.com/exodist/Trace-Mask.
77
79 Chad Granum <exodist@cpan.org>
80
82 Chad Granum <exodist@cpan.org>
83
85 Copyright 2015 Chad Granum <exodist7@gmail.com>.
86
87 This program is free software; you can redistribute it and/or modify it
88 under the same terms as Perl itself.
89
90 See http://www.perl.com/perl/misc/Artistic.html
91
92
93
94perl v5.32.0 2020-07-28 Trace::Mask::Util(3)