使用Perl从Java源文件集合中删除第一个注释

时间:2011-08-29 09:41:12

标签: regex perl scripting

我正在尝试从Java源文件集合中删除第一个C风格的注释(仅第一个)。起初我尝试了一个多线sed,但是没有正常工作所以在一些谷歌搜索后似乎Perl是要走的路。我曾经喜欢Perl,它是我用来制作网络程序的第一种语言,但我遇到了试图使这个脚本工作的问题:

#!/usr/bin/perl -i.bak

$s=join("",<>);
$s=~ s/("(\\\\|\\"|[^"])*")|(\/\*([^*]|\*(?=[^\/]))*\*\/)|(\/\/.*)/$1 /;
print $s;

我用要处理的文件的文件名来调用它,例如./com.pl test.java。根据Internet上的所有内容,-i(就地编辑)应该将输出从print语句重定向到文件,而不是打印到stdout。现在这就是事情:事实并非如此。无论我尝试什么,我似乎无法用打印输出替换文件。我也尝试过$ ^但是这也不起作用。

我不知道它是否相关,但我在Ubuntu 11.04上。

P.S。我知道regexing源代码的缺陷:)

1 个答案:

答案 0 :(得分:1)

以下命令行无效吗?

$ perl -pi.bak 's|your_regex|here|' *.java

在脚本

与上述相同的脚本是:

#!/usr/bin/perl -pi.bak
s|your_regex|here|;

正如triplee在评论中指出的那样,原始帖子错过了p标记。

有关详情,请参阅perldoc perlrun