Удалите первый комментарий из коллекции исходных файлов Java, используя Perl - PullRequest
1 голос
/ 29 августа 2011

Я пытаюсь удалить первый комментарий в стиле C (только первый) из коллекции исходных файлов Java. Сначала я попробовал многострочный sed, но это не сработало должным образом, поэтому после некоторого поиска в Google мне показалось, что Perl был подходящим вариантом. Раньше мне нравился Perl, это был первый язык, на котором я когда-либо делал веб-программу, но я наткнулся на стену, пытаясь заставить этот скрипт работать:

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

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

Я называю это именем файла (ов) файлов, которые нужно обработать, например, ./com.pl test.java. Согласно всему, что есть в Интернете, -i (редактирование на месте) должно перенаправлять вывод из операторов print в файл вместо печати в stdout. Теперь вот вещь: это не так. Независимо от того, что я пытаюсь, я не могу заставить его заменить файл выводом на печать. Я тоже пробовал $ ^ I, но это тоже не работает.

Не знаю, актуально ли это, но я нахожусь на Ubuntu 11.04.

P.S. Я знаю о подводных камнях регулярного выражения исходного кода:)

1 Ответ

1 голос
/ 29 августа 2011

Не работает ли следующее из командной строки?

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

Внутри скрипта

Сценарий, эквивалентный приведенному выше:

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

В оригинальном сообщении отсутствовал флаг p, на что указывает triplee в своем комментарии.

Подробнее см. perldoc perlrun.

...