求$^I用法的一个例子

求$^I用法的一个例子

RT
Perl脚本(perl_test)内容如下:
#!/usr/bin/perl -w

use strict;
chomp(my $date = localtime);
$^I =".bak";
while(<>){
s/^Author:.*/Author: Randal L. Scharwartz/;
s/^Phone:.*\n//;
s/^Date:.*/Date: $date/;
print;
}


测试文件(file_test)内容如下:
Program name: granite
Author: Gilbert Bates
Company: RockSoft
Department: R&D
Phone: +1 503 555-0095
Date: Tues March 9, 2004
Version: 2.1
Size: 21k
Status: Final beta



root@youzi#./perl_tes file_test


这是我在《Perl语言入门》找到的,我正看到这里,但是为什么这个例子执行之后原文件也发生了变化,和新生成的文件内容一样?

ls 的是怎么试的? 我都可以的
就是执行
#./perl_tes file_test
然后file_test这个文件的内容就是发生了变换,也就是经过处理了,和file_test.bak的内容相同;
正常的应该是file_test的内容不变,而file_test.bak是经过处理的!
不是的,应该是把原文件保存成.bak文件,然后对原文件修改,也就是 file_test
但是,即使是那样的话,file_test.bak也不是原来的内容呀,同样是变化的!没起到备份源文件的目的
你是怎么做得?
%cat file_test
Program name: granite
Author: Randal L. Scharwartz
Company: RockSoft
Department: R&D
Date: Tue Aug  5 07:34:07 2008
Version: 2.1
Size: 21k
Status: Final beta

%cat file_test.bak
Program name: granite
Author: Gilbert Bates
Company: RockSoft
Department: R&D
Phone: +1 503 555-0095
Date: Tues March 9, 2004
Version: 2.1
Size: 21k
Status: Final beta
我找到原因了,不过这太蹊跷了!但是我还不知道深层次的原因
我是在虚拟机上的环境,而我在虚拟机上又共享了Windows XP的目录,这中情况下运行程序后,两个文件都是经过处理的!
等到我移到属于Linux自己的目录,也就是非共享Windows XP目录下,这里我在根目录下运行程序,结果是正确的!
dos2unix   


我试过N遍了,在我所说的(完全)共享Windows目录下,结果就是原文件和备份文件内容是相同的,都是处理过的