擅长:python、mysql、java
<p>有点偏离主题(取决于您对“Perl”的定义),但可能感兴趣。。。在</p>
<pre><code>perl6 -e ' .lc.say for "infile.txt".IO.lines ' > lowered.txt
</code></pre>
<p>这既不处理“逐字节”也不处理“整个文件”,而是“逐行处理”。<code>.lines</code>创建一个延迟列表,这样如果文件很大,就不会占用大量内存。文件被假定为文本(这意味着您在读取时得到<code>Str</code>,而不是<code>Buf</code>)的字节,编码默认为“Unicode”—意思是<code>open</code>将尝试找出使用了什么UTF,如果不能,它将假定<code>UTF-8</code>。详细信息<a href="https://doc.perl6.org/routine/open#Encoding_options" rel="nofollow">here</a>。在</p>
<p>默认情况下,行尾是<code>chomp</code>'的,当您阅读并由<code>say</code>放回原处时,如果处理要求禁止这样做,您可以将布尔命名参数<code>:chomp</code>传递给<code>.lines</code>(并使用<code>.print</code>,而不是{<cd11>})</p>
^{pr2}$
<p>您可以避免IO重定向,并在perl6中完成所有操作,但这将<em>将整个文件作为一个文件读入<code>Str</code></p>
<pre><code>$ perl6 -e ' "lowered.txt".IO.spurt: "infile.txt".IO.slurp.lc '
</code></pre>