需要简单的Perl脚本帮助

时间:2010-06-01 10:37:14

标签: javascript perl

我正在寻找创建一个perl脚本,我将在JavaScript文件上运行以自动更改(')来破坏脚本。

示例:

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>');

在第二行“Lorem ipsum lor'em x em 2”中包含一个单引号,将通过脚本删除。其余的单引号将像“document.writeln('”

2 个答案:

答案 0 :(得分:3)

尝试使用正则表达式:

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

这将需要你的第二行:

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

并输出:

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

一个简单的脚本可能是:

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

您可以输入以下命令来运行:

perl myscript.pl file.js

答案 1 :(得分:0)

最简单的方法是替换所有'然后替换掉安全的那些,类似于:

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

显然,这样的解决方案是一个快速而肮脏的解决方案,只有在您对输入进行控制时才会起作用,如果输入格式不为人所知,则会失败。