是否有从Perl创建的文本文件的行长度限制?

时间:2009-09-19 12:46:21

标签: perl unix file filesystems

在编写Perl脚本时,我需要在文件的一行中用逗号分隔编写用户名。

这就是为什么我想知道.txt文件中该行的最大大小是否有任何限制。

7 个答案:

答案 0 :(得分:13)

文本文件就像任何其他文件一样,换行符就像任何其他字符一样,因此只有通常的文件大小限制适用(旧文件系统的4Gb大小限制,文件必须适合磁盘等)。

读取和写入它不会遇到任何问题,除非您逐行读取它 - 您可能会耗尽内存然后遇到缓冲区溢出。这可能发生在任何文本编辑器或文本处理程序(例如sed或awk)中,因为与OS内核不同,在那些行分离事项中

我建议每行保留一个用户,因为当您使用外部程序处理文件时,它更自然易读并且不易出错。

答案 1 :(得分:4)

您唯一需要担心的是您可以创建的文件大小以及您可以读取的文件大小。

计算机对行没有任何了解,这是对文件中字节的解释。我们确定有一些字符序列划分一行的结尾,然后告诉我们的程序从文件中抓取东西,直到它到达该序列。对我们来说,这是一条线。

例如,您可以在文本文件中定义一行以逗号结尾:

 $/ = ',';

 while( <DATA> )
    {
    chomp;
    print "Line is: $_\n";
    }

 __DATA__
 a,b,c,d,e,f,g

即使看起来我在__DATA__下只有一行,但这只是因为我们已经习惯了书籍。电脑不读书。相反,这个程序认为逗号之间的所有内容都是一行:

Line is: a
Line is: b
Line is: c
Line is: d
Line is: e
Line is: f
Line is: g

答案 2 :(得分:3)

除文件系统外,没有大小限制,最可能是2TB或其他。

答案 3 :(得分:2)

不,在达到任何文件大小限制之前,没有此限制。

答案 4 :(得分:2)

我刚刚遇到一个问题,在Kwrite中有一条长约1M chrs的线。

虽然没有理论上的限制,但如果你要处理你的文件,你必须将这条线包裹起来以显示宽度。在每次编辑时,都会执行许多计算,包括交换内存。塔尔使编辑变得笨拙。长线可能非常不方便。

答案 5 :(得分:1)

在一些旧的Unix系统上,一些文本实用程序(例如,连接,排序甚至一些旧的awk)对最大行大小有限制。我认为这是实用程序的限制,但不是操作系统。据我所知,GNU实用程序没有这样的限制,因此Linux从来没有这个问题。

答案 6 :(得分:-1)

文件大小取决于操作系统的文件系统。工具对此没有限制(或者至少我迄今为止从未见过......)