2009-07-06 4 views
-2

J'essaie de remplacer tous les symboles £ dans un fichier HTML avec £. Mon expression régulière ne semble pas fonctionner.Comment puis-je remplacer tout £ dans un fichier avec £ avec Perl?

Pourriez-vous m'aider s'il vous plaît?

+1

Montrez ce que vous avez essayé cela ne fonctionne pas pour que les gens puissent voir ce qui se passait mal et vous aider? – ysth

+0

Vous continuez à demander "Quel est le problème" dans les commentaires, mais personne ne peut vous le dire puisque vous n'avez pas dit ce que vous avez fait. Essayez-vous de le faire dans Vim? Si c'est le cas, comment_? Essayez-vous de le faire en utilisant Perl? Si c'est le cas, comment_? – Telemachus

+0

Désolé son mitake, avant que j'insère d'autres commentaires et le supprime. Le problème est maintenant levé – joe

Répondre

2

Cela devrait fonctionner,

#!/usr/bin/perl 
# File: convert.pl 
no utf8; # its not required 
while (<>) { 
    s/(\xa3)/pound/g; 
     print; 
} 

puisque £ a montré comme 0xA3 sur mon hexdump.

Mais, il en sera

#!/usr/bin/perl 
while (<>) { 
    s/£/pound/g; 
     print; 
} 

Il suffit de dire

chmod a+x convert.pl 
convert.pl yourfile.html > newfile.html 
4

Vous avez très probablement oublié de:

use utf8; 

Essayez le programme suivant:

#!/usr/bin/perl 

use strict; 
use warnings; 
use utf8; 

while (<DATA>) { 
    s/£/&pound;/g; 
    print 
} 

__END__ 
This is sample text with lots of £££! 
50£ is better than 0£. 

Si vous voulez lire à partir d'un fichier nommé input et écrire dans un fichier nommé output:

#!/usr/bin/perl 

use strict; 
use warnings; 
use utf8; 

open my $input, '<', 'input' or die $!; 
open my $output, '>', 'output' or die $!; 

binmode $input, ':utf8'; 

while (<$input>) { 
    s/£/&pound;/g; 
    print $output $_; 
} 
+1

Pourquoi '& pound;' et pas seulement '£' dans la substitution? Si vous utilisez & il apparaîtra comme £ au lieu de £ dans le navigateur. –

+0

@Lars Haugseth: La question a été éditée plus tard pour changer '& livre;' à '£'. J'ai modifié ainsi. Merci de me le faire savoir. :-) –

+0

@Krish: Désolé, je n'ai pas compris ce que vous essayez de faire. S'il vous plaît, expliquez. –

0
perl -i.bak -ne 's/£/&pound/g; print $_' file 
+0

Vous devriez utiliser l'option -p au lieu de -n si vous imprimez juste à la fin. 'perl -i.bak -pe 's/£/& pound/g' fichier' –

Questions connexes