Я использую следующий скрипт, который выполняет все хорошо, за исключением того, что он добавляет три дополнительные фигурные скобки в конце файла.
abc.jso
содержит много строк, где несколько строк имеют только открывающие / закрывающие фигурные скобки (в случае, если эта информация помогает)
Я попытался сделать print $a " $var";
вместо print $a "$var";
. Короче говоря, я добавил пространство перед этим print
, и это сработало.
open (my $a,'+<',"abc.jso") or die $!;
my @lines=<$a>;
seek $a,0,0;
while (@lines) {
my $var = shift @lines;
if ($var=~ /^\s*\"(netlist|filelist)\" : \".*$blk.*\",/) {
print $a " \"netlist\" : \"/t98/pnr/work/$blk"."_rk/run/dc/$blk"."_post_dft.v\",\n";
$count++;
print "Netlist got replaced\n";
}
elsif ($var=~ /^\s*\"spf\" : \".*$blk.*\"/) {
print $a " \"spf\" : \"/t98/scan/atpg/t98_1.0/spf/$blk".".scan_compress.spf\"\n";
$count++;
print "SPF got replaced\n";
}
else {
print $a "$var";
}
}
close($a);
Может кто-нибудь объяснить, почему это происходит? Есть ли такой угловой случай обработки текста, о котором я не знаю?