++ed by:
1 non-PAUSE user
Author image Hoe-Kit Chew
and 1 contributors


Function::Version - Define and use different function versions


  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
  my $dump = $defn->func('dump')          # Select dump() v1.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()


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.


Hoe Kit CHEW <hoekit@gmail.com>


Copyright 2021- Hoe Kit CHEW


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