免费注册 查看新帖 |

Chinaunix

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

看了小骆驼书上的课后题答案不是很懂 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-17 10:51 |只看该作者 |倒序浏览
十三章中的第三题:

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;
  4. my ($string, $pos, $sub);
  5. my @places;
  6. for($pos = -1; -1 !=
  7.                 ($pos = index
  8.                 +$string,
  9.                 +$sub,
  10.                 +$pos
  11.                 +1
  12.                         );
  13. push @places, ((((+$pos))))) {
  14.         'for ($pos != 1; # ;$pos++) {
  15.          print "position $pos\n";#;';#' } pop @places;
  16. }
复制代码

大牛们帮解释一下吧

[ 本帖最后由 marsxxy 于 2009-6-17 10:52 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-06-17 12:10 |只看该作者
哪一句不懂啊?

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
3 [报告]
发表于 2009-06-17 20:54 |只看该作者
答案中有解释的嘛。实话说,的确不好懂,我都看了好几遍了,还是晕乎晕乎的。

论坛徽章:
0
4 [报告]
发表于 2009-06-18 11:38 |只看该作者
原帖由 wxlfh 于 2009-6-17 20:54 发表
答案中有解释的嘛。实话说,的确不好懂,我都看了好几遍了,还是晕乎晕乎的。

这个题没解释

论坛徽章:
8
戌狗
日期:2014-09-26 16:39:44水瓶座
日期:2014-10-10 02:06:57金牛座
日期:2014-10-11 23:04:042015亚冠之首尔
日期:2015-06-23 15:37:0015-16赛季CBA联赛之天津
日期:2016-01-22 18:58:2915-16赛季CBA联赛之佛山
日期:2016-05-31 19:18:0815-16赛季CBA联赛之同曦
日期:2016-08-10 16:26:3315-16赛季CBA联赛之辽宁
日期:2018-01-10 11:47:40
5 [报告]
发表于 2009-06-18 15:49 |只看该作者
我怎么看这个程序如此的别扭呢

论坛徽章:
0
6 [报告]
发表于 2009-06-18 16:30 |只看该作者
小骆驼中对于这段程序的说明,原话如下
On the other hand, if you were wanted to obfuscate your code (shame on you), you could create a monster like this (shame on us):
That trickier code works in place of the original tricky for loop. You should be able to decipher that one or obfuscate code to amaze your friends and confound your enemies. Use these powers only for good, never for evil.


代码格式整理之后
  1. for (my $pos = -1;
  2.     -1 != ($pos = index +$string, +$sub, +$pos+1);
  3.     push @places, ((((+$pos)))))
  4. {
  5.         'for ($pos != 1; # ;$pos++) {
  6.           print "position $pos\n";#;';#' } pop @places;
  7. }
复制代码


这段代码就是一个index函数的升级+迷惑版 ,功能也是在$string中寻找$sub出现的$pos并且push到@places数组中。同index不同的一点是,这段代码能够循环查找,如果$string为"work and work again",$sub为"work",则@places的值为0和9。功能完全是通过for循环的头部来实现的,循环体内(花括号内)是一个被丢弃的字符串+注释,完全是迷惑用的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP