package Pm_11110263_FilenameGen; use strict; use warnings; use Exporter 'import'; our @EXPORT_OK = qw{gen_filename}; my %dispatch = ( 'DATE DMY' => sub { my ($d, $m, $y) = (localtime)[3..5]; return join '', $d, $m+1, $y+1900; }, 'DATE MY' => sub { my ($m, $y) = (localtime)[4,5]; return join '', $m+1, $y+1900; }, 'DATE Y' => sub { return (localtime)[5] + 1900; }, ); sub _perform_substitution { my ($token) = @_; die "FATAL! '$token' is invalid" unless exists $dispatch{$token}; return $dispatch{$token}->(); } sub gen_filename { my ($template) = @_; $template =~ s/~([^~]+)~/_perform_substitution($1)/eg; return $template; } 1;