文件内容分离

文件内容分离

use Net::Domain;
$networkname = Net::Domain->hostname();
$userDir = "c:/users";

open (FILE,"$userDir/file.txt")||die ("failed!");
@file=(<FILE>);
close(FILE);
foreach $file(@file)
{
$_=$file;   
$temp=(split /\s+/)[6];
if ($temp=~/user/){
$user=(split /\s+/)[7];
checkuser($user,$_);
summary();
}
}

sub checkuser()
{
if($_[0]=~/,/){$username=chop($_[0]);}
my $userName=$_[0];
my $content=$_[1];
opendir(USERDIR, $userDir) or die "failed !";
    while ($_=readdir(USERDIR))
        {
            $userfile = $userDir . "/" . $_;
                if (-e "$userDir/$userName.txt") {
                open (USERNAME,">>$userDir/$userName.txt");
                print USERNAME $content;
                close(USERNAME);
                                         }
                                        else{
                                            open(F,">$userDir/$userName.txt");
                                          print F "$content";
                                          close(F);
                                               }
                     closedir(USERDIR);
                             }                                 }
怎么直接在内存中操作呢。我想最后写文件。上面的是边读边写


QUOTE:
原帖由 shijiang1130 于 2009-1-6 18:39 发表
怎么直接在内存中操作呢。我想最后写文件。上面的是边读边写

请参考怎样把大象放到冰箱里.
建议步骤: 读入内存 操作 写入文件

呵呵 开个玩笑.
但实在猜不出你遇到了什么问题.
把文件读入内存你会. 写文件你也会.  还有哪能有问题呢?
因为文件有点大。还是数据结构没学好啊
还是没看出来你的意图?
你又没调用 flush, 应该会 缓存 吧
文件大的话那更要边读边写了
小文件的话可以都读到内存中为了方便