关于全局变量的警告问题
时间:2010-08-23
来源:互联网
本帖最后由 brant_chen 于 2010-08-23 16:11 编辑
我是这样的:
复制代码
老是提示:
Use of uninitialized value in pattern match (m//) at p.pl line 29.
怎么取消这个警告啊?!!
谢谢!
备注:
我明白是没有进行defined 判断,但是,我的$m是全局变量,难道我要在每个$m全局变量出现的地方进行一次defined判断?太繁琐了吧!
不好意思,我把 te_init 加到if判断以前,就正常了,片段如下:
复制代码
但是我正式的perl代码里头,流程非常多,是这样设计的:
package a被调用了很多次,但是外面会在所有任何调用之前,传值进来把package a里面的全局变量进行初始化,貌似,是不是我第二次调用的时候,
perl会认为package a里面的全局变量时新的而没有初始化的,导致出现警告的呢?
谢谢。
我是这样的:
- #!/usr/bin/perl
- use strict;
- use warnings;
-
- our $m=undef;
-
- sub te_init {
- $m="test";
- }
-
- if ($m =~ m/te/) {
- print "OK\n";
- }
- else {
- print "failed\n";
- }
-
- exit 0;
Use of uninitialized value in pattern match (m//) at p.pl line 29.
怎么取消这个警告啊?!!
谢谢!
备注:
我明白是没有进行defined 判断,但是,我的$m是全局变量,难道我要在每个$m全局变量出现的地方进行一次defined判断?太繁琐了吧!
不好意思,我把 te_init 加到if判断以前,就正常了,片段如下:
- our $m=undef;
-
- sub te_init {
- $m="test";
- }
- te_init ;
-
- if ($m =~ m/te/) {
- print "OK\n";
- }...
package a被调用了很多次,但是外面会在所有任何调用之前,传值进来把package a里面的全局变量进行初始化,貌似,是不是我第二次调用的时候,
perl会认为package a里面的全局变量时新的而没有初始化的,导致出现警告的呢?
谢谢。
作者: brant_chen 发布时间: 2010-08-23
你是怎么进行初始化的呢?每次调用前都初始化?
作者: yybmsrs 发布时间: 2010-08-23
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28