+ -
当前位置:首页 → 问答吧 → 关于全局变量的警告问题

关于全局变量的警告问题

时间:2010-08-23

来源:互联网

本帖最后由 brant_chen 于 2010-08-23 16:11 编辑

我是这样的:
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. our $m=undef;

  5. sub te_init {
  6.    $m="test";
  7. }

  8. if ($m =~ m/te/) {
  9.    print "OK\n";
  10. }
  11. else {
  12.    print "failed\n";
  13. }

  14. exit 0;
复制代码
老是提示:
Use of uninitialized value in pattern match (m//) at p.pl line 29.

怎么取消这个警告啊?!!
谢谢!


备注:
我明白是没有进行defined 判断,但是,我的$m是全局变量,难道我要在每个$m全局变量出现的地方进行一次defined判断?太繁琐了吧!

不好意思,我把 te_init 加到if判断以前,就正常了,片段如下:
  1. our $m=undef;

  2. sub te_init {
  3.    $m="test";
  4. }
  5. te_init ;

  6. if ($m =~ m/te/) {
  7.    print "OK\n";
  8. }...
复制代码
但是我正式的perl代码里头,流程非常多,是这样设计的:

package a被调用了很多次,但是外面会在所有任何调用之前,传值进来把package a里面的全局变量进行初始化,貌似,是不是我第二次调用的时候,
perl会认为package a里面的全局变量时新的而没有初始化的,导致出现警告的呢?
谢谢。

作者: brant_chen   发布时间: 2010-08-23

你是怎么进行初始化的呢?每次调用前都初始化?

作者: yybmsrs   发布时间: 2010-08-23

热门下载

更多