急急急!求助代码解读 。

急急急!求助代码解读 。

急急急!求助代码解读 。
有人能帮我给出下面代码的 伪代码吗?实在看不懂啊

其中@answer是多维数组,$dctnme{$reqmth}{$DCT})是 字符串

foreach (@answer){
my %answer;
@answer{split(/$VM/o,$dctnme{$reqmth}{$DCT})}=split(/$VM/o);
foreach my $k (keys %answer){
if(defined($answer{$k}) && $answer{$k}=~m!\Q$SVM\E!){
$answer{$k}=[split(/$SVM/o,$answer{$k})];
}
}
$_=\%answer;
}
return @answer;
………………建议你去看看.
………………建议你去看看高级Perl编程的第二章
这些代码已经算是非常表意了
总算通过对传入数据的分析.
总算通过对传入数据的分析,瞎猫碰死耗子,用其他语言给改写掉了。对我这个刚接触perl的人而言,perl的语法太“诗意”了,摸不着方向啊。
虽然我接下来可能对perl敬而远之,但还是谢谢楼上的兄弟了
这段代码写的很难看。看起.
这段代码写的很难看。看起来写的人对 Perl 了解,但是这并不代表可以任用 Perl 的所有特性。程序的易读性,易维护性才是最重要的。Damain Conway 的 "Perl Best Practices" 一书就是用来解决这个问题的。话多了一些,要解读这个比较紧凑的程序,最好把字里行间用空格格开。

[quote]
foreach ( @answer ){
my %answer;
@answer{ split( /$VM/o, $dctnme{$reqmth}{$DCT}) } = split( /$VM/o );
[/quote]
@answer{split(/$VM/o,$dctnme{$reqmth}{$DCT})} 是一个 hash slice. split 用来把 $dctnme{$reqmth}{$DCT} 以 $VM 为分隔符分离,生成一个 list。 然后把这个 list 作为 %answer 的 keys , 把 split(/$VM/o) 的结果作为每个 key 相对应的值。

这里既用了 @answer , 又用了 %answer , 同一个名字,很容易混淆。

[quote]
foreach my $k (keys %answer){
if ( defined( $answer{$k} ) && $answer{$k} =~ m!\Q$SVM\E! ){
[/quote]
这里是循环 %answer 的每个 key, 如果每个值都 defined, 而且匹配 $SVM , 继续

[quote]
$answer{$k} = [ split( /$SVM/o , $answer{$k} ) ];
[/quote]
这里把 %answer 的每个 key 的值分解开,把解开的 list 重新复制给这个 key

[quote]
}
}
$_=\%answer;
}
return @answer;
[/quote]

这里 $_=\%answer 没什么作用, 因为 foreach (@answer) {}每次循环都重值了 $_ 。

这个小程序的逻辑我没有时间分析,觉得很乱。程序又太紧凑,难读。维护起来都要头疼的 :)
让我最后再次推荐一次 "Perl Best Practice"。
是的,我也觉得程序的可维.
是的,我也觉得程序的可维护性是最重要的