免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bobofreebird
打印 上一主题 下一主题

perl比较大小的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-12-20 09:34 |只看该作者
没发现是那错了

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

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

论坛徽章:
0
13 [报告]
发表于 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] > 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 秒) - 正常终止

论坛徽章:
0
14 [报告]
发表于 2007-12-20 09:48 |只看该作者
当然了,补充一点,如果按字符比较
"20"是大于"100"的,所以不知道你到底要干嘛了,怎么会字符和数字比较?
难道是1010是"10"."10"这样弄出来的?

论坛徽章:
0
15 [报告]
发表于 2007-12-20 09:49 |只看该作者
原帖由 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,否则就会报错
多看点基础书

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
16 [报告]
发表于 2007-12-20 10:07 |只看该作者
原帖由 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];
}

论坛徽章:
0
17 [报告]
发表于 2007-12-20 10:28 |只看该作者
学习,不学习就被踢

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

论坛徽章:
0
18 [报告]
发表于 2007-12-20 10:44 |只看该作者
原帖由 bobofreebird 于 2007-12-20 10:28 发表
学习,不学习就被踢

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

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

论坛徽章:
0
19 [报告]
发表于 2007-12-21 11:02 |只看该作者

回复 #11 bobofreebird 的帖子

#!/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];

论坛徽章:
0
20 [报告]
发表于 2007-12-21 14:40 |只看该作者
原帖由 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  方便多了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP