my $s = "foo1bar";
$s =~ /(\w+)\d(\w+)/;
print "var1: $1\tvar2: $2\n";
my $p = "$2$1"; # works and prints "p is barfoo"
# call script as "perl pmtest.pl $2$1"
#my $p = "$ARGV[0]"; # doesn't work, prints "p is $2$1"
print "p is $p\n";
####
var1: foo var2: bar
p is barfoo
####
var1: foo var2: bar
p is $2$1
####
use strict;
use warnings;
use Config::IniFiles;
my %args;
my $global_ini_data = Config::IniFiles->new( -file => "test.ini" );
my $regex = $global_ini_data->val( 'client1', 'rename' );
my $filename = "201306051200foobar.dat";
print "REGEX: $regex\n";
print "BEFORE: $filename\n";
# Uncomment each method individually to test
# Method 1: doesn't work
#$filename =~ qr($regex);
# Method 2: doesn't work
#$filename =~ $regex ;
# Method 3: doesn't work
#$filename = modify($filename, sub { $_[0] =~ $regex });
# Method 4: doesn't work (not global)
#my ($before, $after) = $regex =~ m{/(.*)/(.*)/};
#$filename = replace($filename, $before, sub { $after }, 0);
# Method 5: doesn't work (global)
#my ($before, $after) = $regex =~ m{/(.*)/(.*)/};
#$filename = replace($filename, $before, sub { $after }, 1);
# Method 6: works, but hardcoded and not in INI; not scalable
$filename =~ s/(\d{2})(\d{2})(\d{4})(.*)/$3$2\.$4/;
# End Methods test
print "AFTER: $filename\n";
exit;
sub replace {
my($string, $find, $replace, $global) = @_;
unless($global) {
$string =~ s($find){ $replace->() }e;
} else {
$string =~ s($find){ $replace->() }ge;
}
return $string;
}
sub modify
{
my($text, $code) = @_;
$code->($text);
return $text;
}
####
[client1]
# PURPOSE: Convert YYYYMMDDhhmmss to MMDDYY.hhmmss
rename=s/(\d{2})(\d{2})(\d{4})(.*)/$3$2\.$4/
####
BEFORE: 201306051200foobar.dat
AFTER: 201306051200foobar.dat
####
BEFORE: 201306051200foobar.dat
AFTER: $3$2\.$4
####
BEFORE: 201306051200foobar.dat
AFTER: 060513.1200foobar.dat