В Perl, обратные кавычки имеют то же управляющий и интерполяцию правило, как строки в двойных кавычках: Обратный слэш формирования неизвестного кода побега забывает обратный слэш, например, "\." eq "."
.
Таким образом, код Perl
print `echo \"1\"`;
print `echo \\"1\\"`;
выходы
1
"1"
Если вы хотите вставить, что sed
команды в Perl, вы должны бежать обратный слэш, так что они даже достигают sh
ELL:
$gf = `sed 's/\\s\\+//g' aaa > bbb`;
На самом деле, вы не получите никаких вывод в $gf
при перенаправлении вывода в файл. Мы могли бы просто сделать
use autodie;
system "sed 's/\\s\\+//g' aaa > bbb";
или с одинарными кавычками:
use autodie;
system q{ sed 's/\s\+//g' aaa > bbb };
который держит обратный слэш.
Тем не менее, это совершенно нереально, поскольку Perl может применить эту замену.
use autodie; # automatic error handling
open my $out, ">", "bbb";
open my $in, "<", "aaa";
while (<$in>) {
s/\s\+//g; # remove all spaces followed by a plus
print {$out} $_;
}
Можете ли вы привести полный пример, включающий скрипт perl и значения переменной 'aaa' - точно, как он вводится? Вы знаете, что '\ s +' не совпадает с '\ s \ +', правильно? – Floris
http://stackoverflow.com/questions/918128/how-can-i-do-bulk-search-and-replace-with-perl – ctn
спасибо..и думаю, следующий ниже приведен ниже, что я искал. – user2508758