以写入方式打开文件,不行,请帮忙,谢谢

以写入方式打开文件,不行,请帮忙,谢谢

系统:   windows

语句:   my $access_log = "E:\\A.TXT";
          open (MAINLOG, ">>$access_log") || die $!;
                print MAINLOG "++++===";
          close (MAINLOG);


错误描述:  Permission denied at E:\project\login.pl line 188.


问题描述:如果是   open (MAINLOG, "$access_log") || die $!;     就没有问题,而且可以读出内容.
               试过   if(-w "$access_log")    是可写的


请问:   为什么我不可以写文件?还有哪些原因可以造成这个错误?

解释几个问题:1  系统是 xp。
                     2  188行附近没有特殊语句(188行之上是,写的别的运行的例子,已经全部注释#掉了,只有偶尔几个print语句)。
                     3  188行就是     open (MAINLOG, ">>$access_log") || die $!;
                     4  没有权限设置,我只是试写这段代码,就不行了
                     5  会不会是文件有写的设置,我看了没有,不知道是不是有隐藏看不到的设置,可否设置强制文件可写?(适合windows xp的强制语句)

谢谢

print  MAINLOG   "++++===";
有两个问题:
1.open (MAINLOG, ">>$access_log") || die $_;  后面应该是 $! 不是 $_ 吧,我不知道你的默认值是甚么!
2.print "++++==="; 应该是和2楼说的那样,把文件句柄名字也写进去,不然系统怎么会知道你是要往那里写数据呢?print  MAINLOG "++++===";
同意楼上的!~
刚copy错了,现在已修正,错误如题,谢谢帮忙看问题所在。
我这儿运行可以, 是不是系统设置的问题呀

my $access_log = "E:\\a.txt";
open (MAINLOG, ">>$access_log") || die $!;
print MAINLOG "++++===";
close (MAINLOG);
line 188,是哪一行啊?
你用的是xp 还是什么?难道没有写权限吗?
如果是权限的话,就运行不到188行了!
不过你最好把188行列出来,然后前后5行一起发出来,便于大家给你解决。
见原贴