Portál AbcLinuxu, 30. října 2025 19:24
time perl -ne 'print $_' longlist.txt # 0.36s time perl -pe ' ' longlist.txt # 0.47sA také proč? :
open FH, "<", "longlist.txt"; print <FH> # 0.5s print while (<FH>) # 0.32sLogicky bych očekával v obou případech opak.
perl -pe ' ' longlist.txtlze zapsat pomocí
-n přibližně takto
perl -ne '} continue { print'
V druhém případě, první varianta načte pole řádků a pak je vytiskne. Pravděpodobně očekáváš slurp, to lze následovně
{local $/; print <> }
nebo přepínačem -0777 (i při one-lineru).
Záleží, co to ve výsledku má dělat. Někdy je užitečný File::Slurp.
print +(<FH>)[1..200_000]; $. < 200_2002 && print while (<FH>);V tomto případě je výsledný čas téměř stejný, což je logické, protože se stejně musí v obou případech číst pomocí readline() a testovat.
-p skript do následujícího cyklu:
while (<>) {
... # your program goes here
} continue {
print or die "-p destination: $!\n";
}
Když měřím -pe '' a -ne '} continue { print or die ""}' tak už mi to vychází stejně.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.