免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2120 | 回复: 7
打印 上一主题 下一主题

为什么用Open 打开一个文件出错? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-30 10:32 |只看该作者 |倒序浏览
我运行下面的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需要预先声明?
如果是,怎样进行声明呢?
(我看书上好像也没有声明啊?

论坛徽章:
0
2 [报告]
发表于 2008-07-30 11:20 |只看该作者
你在后面写个close(ALLEN);
估计就没警告了

论坛徽章:
0
3 [报告]
发表于 2008-07-30 12:04 |只看该作者
我汗,-w的信息很清楚啊。你打开了句柄,但是并没有使用。。

论坛徽章:
0
4 [报告]
发表于 2008-07-30 13:16 |只看该作者
原帖由 yiqiume 于 2008-7-30 12:04 发表
我汗,-w的信息很清楚啊。你打开了句柄,但是并没有使用。。

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

[ 本帖最后由 xianer2 于 2008-7-30 13:18 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-07-30 13:21 |只看该作者
原帖由 guijia8427 于 2008-7-30 11:20 发表
你在后面写个close(ALLEN);
估计就没警告了

真的很管用。果然加了 close之后就没有warning了。

论坛徽章:
0
6 [报告]
发表于 2008-07-30 13:43 |只看该作者
因为你开了warnings.

论坛徽章:
0
7 [报告]
发表于 2008-07-31 10:21 |只看该作者

回复 #4 xianer2 的帖子

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

论坛徽章:
0
8 [报告]
发表于 2008-07-31 14:10 |只看该作者
非常感谢楼上的指导!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP