я в состоянии сделать это в командной строке, и она работает:Perl: создание сценария как эффективный как PERL однострочника
~/Tools/perl/edif_extr_cell.pl design.edif nmos1p8v | perl -p -e 's/^/\n/ if /portImplementation|figure\s+device/;' | perl -n -000 -e 'print if /portImplementation/;'
(в основном, извлекая часть файла EDIF).
Теперь я хочу воспользоваться этим. И мой сценарий внизу. Вопрос: может ли этот код быть более эффективным? Если чувствуете, что это очень неэлегантно. Я мог легко транслировать потоки в командной строке, но в сценарии я чувствую себя потерянным.
#!/usr/bin/perl -w -p
BEGIN{ $file = '';}
s/^/\n/ if /portImplementation|figure\s+device/;
$file .= $_;
END{
$cmd = q{\rm -f /tmp/dump}.$$.'.txt';
system($cmd);
open(OUT, ">/tmp/dump$$.txt");
print OUT $file;
close OUT;
$out = `perl -n -000 -e 'print if /portImplementation/;' /tmp/dump$$.txt`;
system($cmd);
print $out;
}
Не могли бы вы подать (упрощенный) входной образец? – choroba