perl 把一个文件的内容考到另外一个文件后不一样,请高手讲解!该如何处理

perl 把一个文件的内容考到另外一个文件后不一样,请高手讲解!!!
#!/usr/bin/perl
unless(open(FILE1, "1.dat ")){
die( "Unable   to   open   1.dat\n ");
}
unless(open(FILE2, "> test.dat ")){
die( "Unable   to   open   test.dat\n ");

}
while(1){
      if(eof(FILE1)){last;}
      else{
                  $line= <FILE1> ;
print   FILE2   ( "$line ");
                }
}
close(FILE1);
close(FILE2);
就是这样一个程序,复制完的文件有的一样有的不一样,怪了,请高手分析一下,是不是遇到什么特殊字符就不一样了,因为不一样的文件是二进制码流,所以不清楚哪出的问题.

------解决方案--------------------
对于二进制流的文件不应该用 <FILE1> 这种方式来读取,这种方式是用于操作以回车分隔的文本文件的。如果是二进制的话,不光$line= <FILE1> 不能很好的工作,print FILE2 $line;也一样不能很好的工作。
你可以试试用read(), write()函数来操作,再配合文件长度,应该就可以完整地实现你想要的功能了。
------解决方案--------------------
#!/usr/bin/perl
unless(open(FILE1, "1.dat ")){
die( "Unable to open 1.dat\n ");
}
unless(open(FILE2, "> test.dat ")){
die( "Unable to open test.dat\n ");

}

binmode FILE1;
binmode FILE2;

while(1){
if(eof(FILE1)){last;}
else{
$line= <FILE1> ;
print FILE2 ( "$line ");
}
}
close(FILE1);
close(FILE2);

再试下。
------解决方案--------------------
但你最好还是使用read和write来处理文件。
------解决方案--------------------
使用binmode

------解决方案--------------------
帮顶