如何在perl中替换“with”

时间:2014-03-04 13:01:15

标签: perl quotes substitution

我想用"替换字符串$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未更改。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您应该使用适合此目的的模块,例如HTML::Entities

use strict;
use warnings;
use HTML::Entities;

my $input = 'abc"abc';
print encode_entities($input);

<强>输出:

abc&quot;abc

在您的代码中,变量$input未更改,因为您使用括号来避免它。

(my $output = $input) =~ s/"/&quot;/g;

这将强制首先发生分配,优先于优先权。然后将正则表达式替换应用于$output。当我运行你的代码时,我得到了预期的输出:

input = abc"abc
output = abc&quot;abc

如果你没有得到这个输出,我希望你的字符串中的引号与你想象的不同。