【发布时间】:2012-07-13 10:51:12
【问题描述】:
我需要获得在这一点 Perl 代码中使用的算法,但我对 Perl 一无所知。通常这不是问题,因为我会研究该语言,但是这个正则表达式的东西让我头疼!
有人可以对此进行伪代码吗?我只需要知道发生了什么,这样我就可以用其他东西来实现它,最好是 PHP 甚至 C++,但我会担心那部分。我只需要以某种方式破译这是在做什么:
$a = $ARGV[0];
$a =~ s/[^A-F0-9]+//simg;
@b = reverse split /(\S{2})/,$a;
$c = join "", @b;
$c .= "0000";
$d = hex($c) % 999999929;
print "$d\n";
【问题讨论】:
-
@Sinan,感谢您更改标题。 :) 确实写得不好,我希望至少会被评论,但事情就是这样。
-
在我看来这不是“写得很糟糕的 Perl 代码”,如果它完成了它应该做的事情,那么它甚至是写得很好的代码。
-
它写得很糟糕,因为它不是提取十六进制数字,而是通过
s///,然后是split,第一个参数并不明显。它没有使用位移操作,而是在末尾连接零。即使s///也是愚蠢的。它应该只是s/[[:^xdigit:]]+//g。/s和/m选项没有任何意义。
标签: perl