NAME Function::Version - Define and use different function versions SYNOPSIS use Function::Version; # Define two versions of load() and dump() my $defn = Function::Version ->def('load', '1.5', sub { "load v1.5: $_[0]" }) ->def('load', '1.6', sub { "load v1.6: $_[0]" }) ->def('dump', '1.5', sub { "dump v1.5: $_[0]" }) ->def('dump', '1.6', sub { "dump v1.6: $_[0]" }) ; my $load = $defn->func('load') # Select load() v1.5 ->ver('1.5'); my $dump = $defn->func('dump') # Select dump() v1.6 ->ver('1.6'); # Call with arguments say $load->with('vista'); # load v1.5: vista say $dump->with('gems'); # dump v1.6: gems say $load->ver('1.6') # Use other versions ->with('hobbits'); # load v1.6: hobbits # Version does not revert say $load->with('ring'); # load v1.6: ring say $dump->func('load') # Using other function dies ->with('hobbits'); # Error: Assigned to dump() DESCRIPTION This module provides a simple way to define and use different function versions. One use case is when deploying changes to an application. Being able to select the function based on a version number is useful to roll-back or roll-forward changes. AUTHOR Hoe Kit CHEW COPYRIGHT Copyright 2021- Hoe Kit CHEW LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.