免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3095 | 回复: 6
打印 上一主题 下一主题

关于字符串和数字互相转换的困惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-01 23:04 |只看该作者 |倒序浏览
#!/usr/bin/perl


use strict;


my @fred = qw{1 3 5 7 9};
my $fred_total = &total(@fred);

print "The total of \@fred is $fred_total.\n";
print "Enter some numbers on separate lines: ";

my $user_total = &total(<STDIN>);
#my $user_total = &total(1..1000);

print "The total of those numbers are $user_total.\n";

sub total {
&nbsp;&nbsp;&nbsp;&nbsp;my $sum = 0;
&nbsp;&nbsp;&nbsp;&nbsp;my $tmp = 0;
&nbsp;&nbsp;&nbsp;&nbsp;foreach $tmp (@_) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#这里的$tmp应该有个换行符啊,为什么不用chomp也可以呢?

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sum += $tmp;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return $sum;
}


字符串在转换为标量时会自动把换行符去掉吗?

论坛徽章:
0
2 [报告]
发表于 2010-01-01 23:21 |只看该作者
其实我是想在那里加个chomp的,结果提示Modification of a read-only value attempted

经过google和百度,终于理解函数传进来的是个常量而非变量。

论坛徽章:
0
3 [报告]
发表于 2010-01-01 23:44 |只看该作者

回复 #1 linux_arm 的帖子

类似于 $sum=1+"2abc\n"
结果是3
数字后头的字符对结果没影响

论坛徽章:
0
4 [报告]
发表于 2010-01-02 10:44 |只看该作者
受教了,谢谢指导

论坛徽章:
0
5 [报告]
发表于 2010-01-02 11:04 |只看该作者
<STDIN>后面一般要加上chomp吧。

论坛徽章:
0
6 [报告]
发表于 2010-01-02 12:02 |只看该作者
my $user_total = &total(chomp(<STDIN>));
这样好点吧···一般输入都chomp好点吧!?

论坛徽章:
0
7 [报告]
发表于 2010-01-02 12:21 |只看该作者

回复 #6 wfnh 的帖子

加上应该是个好的习惯,虽然在这里不会影响结果(因为是对数值计算)
输入STDIN的时候\n只是一个结束标志,并非真正想要的
chomp一下,避免处理字符的时候出问题(长度计算、截取操作)等吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP