Perl 正则表达式替换为 $1 时出问题
以下代码,先是将 09:31 转换成 31-09 ,成功。
现在希望替换格式不要在代码中写死,希望能在运行时由用户输入。为了叙述方便,此处假设输入后保存在 $replace 中了。继续运行,期望将 11:59 转换为 59-11 ,结果转换成 $2-$1 了。求高手指点。
#! /usr/bin/perl -w
use strict;
my $text;
my $regex = '(\d+):(\d+)';
my $replace = '$2-$1';
$text = '09:31';
$text =~ s/$regex/$2-$1/;
print $text, "\n";# 输出期望值31-09
$text = '11:59';
$text =~ s/$regex/$replace/;
print $text, "\n";# 输出$2-$1
#! /usr/bin/perl -w
use strict;
my $text;
my $regex = '(\d+):(\d+)';
my $replace = '$2-$1';
$text = '09:31';
$text =~ s/$regex/$2-$1/;
print $text, "\n"; # 输出期望值31-09
$text = '11:59';
eval("\$text =~ s/$regex/$replace/;");
print $text, "\n"; # 输出$2-$1