- 论坛徽章:
- 0
|
本帖最后由 brant_chen 于 2010-08-23 16:11 编辑
我是这样的:- #!/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";
- }...
复制代码 但是我正式的perl代码里头,流程非常多,是这样设计的:
package a被调用了很多次,但是外面会在所有任何调用之前,传值进来把package a里面的全局变量进行初始化,貌似,是不是我第二次调用的时候,
perl会认为package a里面的全局变量时新的而没有初始化的,导致出现警告的呢?
谢谢。 |
|