package Slicer; use base Exporter; use Data::Dumper; our @EXPORT = qw(slice unslice); sub slice() { my @caller = caller; print $caller[0]; print ":: sliced :" , @_; } sub unslice { for my $m (@_) { eval "sub $m\::slice() {}"; } } 1; #### package SomeModule; use Slicer; sub something { #code.... &slice("let me say something\n"); } 1; #### #!/usr/bin/perl use Slicer; #unslice 'SomeModule'; use strict; use SomeModule; #use constant slice => 0; #sub slice() {} ; sub mainsub { my $x = 12;#more code.... &slice("mainsub\n"); } slice && print "&& sliced\n"; print "if sliced\n" if slice; &slice(debug => "main\n"); mainsub; SomeModule::something; slice; #### if, &&, slice, &slice(params) #### use constant, sub() {}, unslice(@ModulesNames)