Portál AbcLinuxu, 10. června 2024 15:26
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.