Portál AbcLinuxu, 4. listopadu 2025 17:55
use strict;
use utf8;
use locale;
use XML::Simple;
binmode (STDIN, 'utf8');
binmode (STDOUT, 'utf8');
binmode (STDERR, 'utf8');
...
$desc="kamém2,";
print "BRK2>$desc\<\n";
if ($desc =~ /žitkov..?.?\s+(ploch..? )?(dom. )?(je )?(cca )?(\d+)\s*m2/) {
$uzitkova_plocha = $5;
} elsif ($desc =~ /ÚP:? (\d+)\s*m2/) {
$uzitkova_plocha = $1;
}
print "BRK3\n";
V podstate veľmi jednoduchá vec, ktorá parsuje súbor tak ako má. Pri niektorých vstupoch (100% reprodukovateľné), napr. ak $desc obsahujé 'ém2,' tak to na riadku s ÚP začne cykliť a dokáže to vyťažiť jeden procesor na 100%. Riešenie (A) je zmeniť ÚP na UP - to by som chápal. Riešenie (B) je pridať k RE case insensitive flag. Napadá vás nejaké riešenie, ktoré je rozumnejšie?
Testované v perle 5.8.8 a 5.8.7
/ÚP:? (\d+)(?=\s*m2)/
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.