← eetop.cn_Perl语言入门(第四版小骆驼书)

推荐答案 测试一下

8<STDIN> 在列表 Context中

问答题 中等 经典问答问答题

参考答案

在Unix或者类似的系统中 ,包括 linux, Mac OS X ,通常可以输入 CTRL + D◆来表明输入已经结束 。Perl会忽略这个字符 , 因此它将在屏幕上显示出来 。在DOS/WINDOWS 系统中,使用 CTRL + Z◆。如果你的实际情况和上述不同 ,查看你系统 的文档或者询问你附近的专家 。 Perl语言入门 (第四版 ) blei@163.com 51/201 9/21/2006◆这仅仅是默认值 ,可以使用 stty来改变它 。但通常是使用它 ;我们还没有看见某台 Unix系统不是使用 CTRL+D 来表明 end-of-file的。 ◆在Perl的某些 DOS/WINDOWS 版本中可能存在 bug,在第一行中使入 CTRL+Z 可能存在问题 。在这样的系统中 ,可以使用在输入的结 束处加上 “\n”来解决。 如果某人运行一个程序 ,输入了三行 ,并且使用了恰当的 end-of-file,那其数组将含有 3个元素。每一个元素为一个由换行 符结束的字符串 ,对应于由 3个换行符结束的输入 。 如果在输入时 ,能一次去掉 (chomp )所有的换行符 ,岂不是很好 ?如果将 chomp应用于一个包含字符串的数组中 ,他将把这 个数组中每一个元素的换行符去掉 ,如下例所示 : @lines = <STDIN>; # 读入所有的行 chomp = (@lines); # 去掉所有的换行符 但更常见的做法是 : chomp (@lines = <STDIN>); # 读入所有的行 ,不包括换行符 当写你自己的程序时 ,可以采用任意种方法 ,大多数 Perl程序员使用第二种 ,更加紧凑些 。 你可能已经意识到这些输入一旦读过 ,就不能重新读了 ◆。到了文件的结尾 ,就没有更多的数据可以读入 。 ◆如果是从某个源 (source,如文件,译者注)输入,那你可以返回去重新读一次 。但这不是这里讨论的问题 。 当输入的文件为一个 400MB的log文件时,将发生怎样的情况 ?行输入操作符读入所有的行 ,这将占去大量的内存 ◆。Perl 不会限制你那样做 ,但你系统的用户 (更别提系统管理员 )将很可能阻止你 。当输入的内容特别大时 ,应当避免一次将所 有的内容都读入内存 。 ◆一般,实际占去的内存要比文件要大 。也就是说 ,一个400MB的文件读入数组时将至少占去 1G的内存空间 。这是因为 Perl为了节约时 间而浪费了些内存 。这是一个好的交易 。如果内存不够 ,可以去买一些 ;但时间不够 ,那就很难办了 。
← 上一题
登录后反馈错题
下一题 →