为什么用Open 打开一个文件出错?

为什么用Open 打开一个文件出错?

我运行下面的code:
----
#!/usr/bin/perl -w
open (ALLEN, "allen.txt" )||die "cannot open file: $!\n";
----

结果报错:
----
Name "main::ALLEN" used only once: possible typo at b.pl line 2.
----

而如果我用:
----------
#!/usr/bin/perl -w
if (open (ALLEN, "allen.txt" )){print "opened";}
else {print "cannot open\n";
exit 1;
};
close (ALLEN);
----------
就不会出错。

请问这是为什么呢?
难道因为句柄ALLEN需要预先声明?
如果是,怎样进行声明呢?
(我看书上好像也没有声明啊? )
你在后面写个close(ALLEN);
估计就没警告了
我汗,-w的信息很清楚啊。你打开了句柄,但是并没有使用。。


QUOTE:
原帖由 yiqiume 于 2008-7-30 12:04 发表
我汗,-w的信息很清楚啊。你打开了句柄,但是并没有使用。。

我不是已经Open它了么?这不是使用么?需要怎样使用呢?能帮举个例子么?



QUOTE:
原帖由 guijia8427 于 2008-7-30 11:20 发表
你在后面写个close(ALLEN);
估计就没警告了

真的很管用。果然加了 close之后就没有warning了。
因为你开了warnings.
open只是为使用做准备,但是你后来既没有使用,也没有关闭,加上你打开了-w,perl当然会提醒你:ALLEN" used only once。
解决方法:
1.去掉-w(不推荐)
2.在open后使用句柄。比如print  ALLEN "\n";
3. close句柄。
PS:和预定义无关。。。perl的变量不需要预定义。
非常感谢楼上的指导!