这段Perl代码在外行术语中做了什么?

时间:2013-02-08 13:15:08

标签: perl

在循环中找到它。我已经读过关于拼接的内容,但它让我更加困惑。 我不熟悉Perl,但我正在尝试将算法翻译成另一种语言。

my $sill = splice(@list,int(rand(@list)),1);
       last unless ($sill);

更具体一点:如果它不从最后一个退出循环,那么$ sill里面会是什么?

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

这会从数组@list中随机删除一个元素。该值已分配给$sill。如果这是一个假值,则封闭循环(未显示)将被打破。

splice获取数组,偏移量和长度,以及替换列表。如果省略替换,则删除元素。

长度是常数(1个元素),但偏移量计算为0和@list长度之间的随机整数。

答案 1 :(得分:2)

这意味着:

  • 从数组list中删除随机元素(0 - >列表元素的数量)和
  • sill变量分配已删除的元素(pop()之类的)和
  • 如果sill变量为假
  • ,则退出循环

请参阅http://perldoc.perl.org/functions/splice.html