我想用"
替换字符串$input
中的所有/"
,我想出以下代码:
#!/usr/bin/perl -w
use CGI;
use CGI::Carp qw ( warningsToBrowser fatalsToBrowser );
my $q = CGI -> new;
print $q -> header();
$input = 'abc"abc';
(my $output = $input) =~ s/"/"/g;
print "input = $input\n";
print "output = $output\n";
但是,$output
未更改。我怎样才能做到这一点?
答案 0 :(得分:2)
您应该使用适合此目的的模块,例如HTML::Entities
:
use strict;
use warnings;
use HTML::Entities;
my $input = 'abc"abc';
print encode_entities($input);
<强>输出:强>
abc"abc
在您的代码中,变量$input
未更改,因为您使用括号来避免它。
(my $output = $input) =~ s/"/"/g;
这将强制首先发生分配,优先于优先权。然后将正则表达式替换应用于$output
。当我运行你的代码时,我得到了预期的输出:
input = abc"abc
output = abc"abc
如果你没有得到这个输出,我希望你的字符串中的引号与你想象的不同。