perl比较大小的问题

没发现是那错了


QUOTE:
原帖由 bobofreebird 于 2007-12-20 09:15 发表
楼上好,改成你说的样子的确不报错.
但是实际情况是这样data[5]里边放的是一个字符串类型的数据,这个数据由两个int类型的数据组合得到,
如:在informix中    a.ncc || b.ncc
现在的要求就是:限制组合后的值大 ...

没法比,字符会被当做0,这样是没什么意义的
要不然,你就全当字符串比,就是用gt和lt,像你原来那样,全部加上双引号
其他不变
我加了
use strict;
use warnings;

代码:
#!/usr/bin/perl -w
#@data = {"11","22","33","44","55","66"};
use strict;
use warnings;
@data=(11,22,33,44,55,66);

if ($data[5] < 0 or $data[5] > 100) {
        $data[5] = 50;
        print $data[5];
}else{
        print $data[5];
}
结果:
Global symbol "@data" requires explicit package name at D:\work\xuexi\perl\iftest.pl line 9.


Global symbol "@data" requires explicit package name at D:\work\xuexi\perl\iftest.pl line 11.

Execution of D:\work\xuexi\perl\iftest.pl aborted due to compilation errors.

输出完成 (耗时: 0 秒) - 正常终止
当然了,补充一点,如果按字符比较
"20"是大于"100"的,所以不知道你到底要干嘛了,怎么会字符和数字比较?
难道是1010是"10"."10"这样弄出来的?


QUOTE:
原帖由 bobofreebird 于 2007-12-20 09:47 发表
我加了
use strict;
use warnings;

代码:
#!/usr/bin/perl -w
#@data = {"11","22","33","44","55","66"};
use strict;
use warnings;
@data=(11,22,33,44,55,66);

if ($data[5] < 0 or $data[5]  ...

狂晕,用了use stirct; 你的变量必须要加上my这样的东西,比如 my @data,否则就会报错
多看点基础书


QUOTE:
原帖由 bobofreebird 于 2007-12-20 09:34 发表
没发现是那错了

try

#!/usr/bin/perl -w
@data=qw/11 22 33 44 55 66/;
if ($data[5] < 0 || $data[5] > 100) {
        $data[5]=50;
        print $data[5];
} else {
        print $data[5];
}
学习,不学习就被踢

只有给经理说,这东西没发比较


QUOTE:
原帖由 bobofreebird 于 2007-12-20 10:28 发表
学习,不学习就被踢

只有给经理说,这东西没发比较

别随便说哦,标量里面数字默认是被识别为数字的,比如你用> <这些比较符的时候
就算是字符组成的字符串,比如"2345",仍然可以用来直接比较的,只是没法和"sgsdf"比较而已
#!/usr/bin/perl -w
use strict;

my @data = qw/11 22 33 44 55 66/;
if($data[5]<0 || $data[5]>100){
    $data[5]=50;
}
print $data[5];


QUOTE:
原帖由 perljoker 于 2007-12-20 08:58 发表
LZ,你想建立的是数组吧?你原来用的语言是C么?
@data = {"11","22","33","44","55","66"}; 改成 @data=(11,22,33,44,55,66);
数字可以不用双引号

PS. 强烈要求文件里面加入 use stirct; use warnings;

加入use stirct; use warnings 是好习惯  不过给你不写 use stirct; use warnings 的懒人办法   把程序 放到 eclipse 找错  个人感觉小程序比  不停的写  my  方便多了