以下是自我解释:
admin> cat test.pl
#!/bin/perl
$var1 = "SELECT * FROM CALENDAR WHERE CALNAME = ( SELECT * from EMP ) )";
$var2 = "( SELECT * from EMP )";
$var3 = "zyx";
if ($var1 =~ /EMP/)
{
$var1 =~ s/$var2/$var3/;
}
print "var1=$var1\n";
admin> ./test.pl
var1=SELECT * FROM CALENDAR WHERE CALNAME = ( SELECT * from EMP ) )
答案 0 :(得分:2)
$var2
中有特殊字符,当用作文字字符时应为quoted
$var1 =~ s/\Q$var2\E/$var3/;
答案 1 :(得分:0)
Comapre:
<强>原始强>
$var1 = "( SELECT * from EMP )";
$var2 = "abcd";
$var3 =~ s/$var1/$var2/;
print "var1=$var1\n";
print "var2=$var2\n";
print "var3=$var3\n";
<强>工作:强>
use strict;
use warnings;
my $var1 = "( SELECT * from EMP )";
my $var2 = "abcd";
my $var3 = "Something to keep, something to be replaced: ( SELECT * from EMP )";
$var3 =~ s/\Q$var1\E/$var2/;
print "var1=$var1\n";
print "var2=$var2\n";
print "var3=$var3\n";
输出:
var1=( SELECT * from EMP )
var2=abcd
var3=Something to keep, something to be replaced: abcd