2014-03-04 39 views
1

替代「與"我想替換所有"字符串$input/"和我想出下面的代碼:如何在Perl

#!/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沒有改變我怎樣才能得到這個權利

回答

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 

如果沒有得到這個輸出,我希望在您的字符串引號是不同的東西比你想象的。

+1

謝謝你的回答。 我只是發現我犯了一個愚蠢的錯誤。 我運行腳本並在瀏覽器上輸出結果。很顯然"將被改爲「通過瀏覽器。」 – KimCheng

+0

不客氣。 – TLP