$ perl -E '
my $x = $ARGV[0] =~ s/(`[^`]+`)/$1/eegr =~ s/\R//gr;
say $x;
' 'DMY_`date +%d%m%Y`_MY_`date +%m%Y`_Y_`date +%Y`.log'
DMY_21122019_MY_122019_Y_2019.log
####
$ perl -e '
my $x = $ARGV[0];
$x =~ s/(`[^`]+`)/chomp(my $y = eval $1); $y/eg;
print "$x\n";
' 'DMY_`date +%d%m%Y`_MY_`date +%m%Y`_Y_`date +%Y`.log'
DMY_21122019_MY_122019_Y_2019.log
####
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;
####
$ perl -E '
use lib ".";
use Pm_11110263_FilenameGen "gen_filename";
say gen_filename($ARGV[0]);
' 'daily_~DATE DMY~_monthly_~DATE MY~_yearly_~DATE Y~.log'
daily_21122019_monthly_122019_yearly_2019.log
####
$ perl -E '
use lib ".";
use Pm_11110263_FilenameGen "gen_filename";
say gen_filename($ARGV[0]);
' 'daily_~DATE DMY~_monthly_~DATE MY~_yearly_~DATE Y~_BAD_~RM ROOT~.log'
FATAL! 'RM ROOT' is invalid at Pm_11110263_FilenameGen.pm line 26.