1

動的置換の正規表現を処理するために eval を使用しています。

左側 ($1) の値キャプチャは、正規表現の右側では使用されていません。

#!/usr/bin/perl
use strict;

my $string = "test-txt";

# Attempt 1
my $regexp_m = '-(\S+)$';
my $regexp_r = '.$1';
my $string2 = eval{ $string =~ s/$regexp_m/$regexp_r/; return $string; };

# Attempt 2
my $regexp = 's/(\S+)$/.$1/';
my $string3 = eval{ $string =~ $regexp; return $string; return $string; };

print "Attempt 1: $string2\n";
print "Attempt 2: $string3\n";

exit;

出力:

試行 1: test.$1

試行 2: test.$1

4

1 に答える 1