Portál AbcLinuxu, 9. května 2025 20:35
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.