Оператор:
(my $newstring = $oldstring) =~ s/foo/bar/g;
, Который эквивалентен:
my $newstring = $oldstring;
$newstring =~ s/foo/bar/g;
, С другой стороны, с Perl 5.13.2 можно использовать /r
, чтобы сделать не разрушительную замену:
use 5.013;
#...
my $newstring = $oldstring =~ s/foo/bar/gr;
Задача записывающее устройство может делать то, что вы хотите:
<record name="log.txt" action="start"/>
...
<record name="log.txt" action="stop"/>
Кроме того, определенные задачи (exec, java и т. Д.) Предлагают эту функцию сами по себе (обычно с помощью аргументов output
и error
)
Попробуйте следующее:
<java classname="some.package.Class"
fork="yes"
output="stdouterr.txt">
...
</java>
stdouterr.txt
будет содержать как stdout, так и stderr
<java classname="some.package.Class"
fork="yes"
output="stdout.txt"
error="stderr.txt">
...
</java>
stdout.txt
и stderr.txt
будет содержать stdout и stderr соответственно
По моему опыту, задача записи имеет тенденцию терпеть неудачу, когда скрипт ant запускается в круиз-контроле, из-за разрешений на доступ к файлам (если кто-то может сказать мне, как исправить, я буду счастливым человеком).
HTH