2010-06-01 8 views
2

Je cherche à créer un script Perl que je vais exécuter sur un fichier JavaScript pour changer automatiquement (') qui casse le script.Aide de script Perl simple requise

Exemple:

file.js

document.writeln('&#187; <a href="/LINK1" TARGET="_blank">Lorem ipsum lorem 1</a><br>'); 

document.writeln('&#187; <a href="/LINK2" TARGET="_blank">Lorem ipsum lor'em x em 2</a><br>'); 

document.writeln('&#187; <a href="/LINK3" TARGET="_blank">Lorem ipsum lorem 3</a><br>'); 

En 2ème ligne "Lorem ipsum lor'em x em 2" contient une citation unique qui sera supprimé par le script. Reste des guillemets simples sera là comme « document.writeln (» »

+0

Vous êtes va devoir expliquer plus comment ce script Perl proposé se rapporte à un fichier contenant du Javascript, et pourquoi il doit être quelque chose fonctionner périodiquement. – Pointy

+0

Non. Ce sera juste une fois lorsqu'il n'est pas exécuté périodiquement. – MUS

+0

Il a édité la question depuis qu'il l'a dactylographiée, @Motti. Cela n'avait aucun sens à l'origine. – Pointy

Répondre

3

Essayez de suivre l'expression régulière.

$data =~ s/ 
    (?<! # negative look-behind 
     \(# ensure no open parenthesis behind 
    ) 
    '  # a quote mark 
    (?! # negative look-ahead 
     \) # ensure no close parenthesis ahead 
    ) 
/\\'/xsg; 

Il prendra votre deuxième ligne:

document.writeln('&#187; <a href="/LINK2" TARGET="_blank">Lorem ipsum lor'em x em 2</a><br>'); 

et sortie:

document.writeln('&#187; <a href="/LINK2" TARGET="_blank">Lorem ipsum lor\'em x em 2</a><br>'); 

Un simple script peut être:

while (<>) { 
    $_ =~ ... # regular expression given above 
    print $_; 
} 

Vous courraient en tapant:

perl myscript.pl file.js 
+0

Je suis désolé, je ne télécharge pas un fichier .zip aléatoire. Et je ne fais pas non plus tes devoirs. Je vous ai montré un chemin, et c'est à vous de décider si c'est un chemin que vous voulez prendre. –

0

La façon la plus simple serait de remplacer tous les ' puis remplacer les arrière sûrs, quelque chose le long des lignes de:

s/'/\\'/g; # replace all single quotes 
s/document.writeln(\\'/document.writeln('/g; # revert safe occurrences 

il est évident qu'une telle solution est une solution rapide et sale qui ne fonctionnera que si vous avez le contrôle sur votre entrée et échouera lamentablement si le format d'entrée est pas bien connu