在Perl中的逗号插值数组中的最后一个元素之前添加“和”

前端之家收集整理的这篇文章主要介绍了在Perl中的逗号插值数组中的最后一个元素之前添加“和”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想创建一个子程序,它向元素添加逗号,并在最后一个元素之前添加“和”,例如,使“12345”变为“1,2,3,4和5”.我知道如何添加逗号,但问题是我得到的结果是“1,4和5”,我不知道如何摆脱最后一个逗号.

sub commas {
  my @with_commas;
  foreach (@_) {
    push (@with_commas,($_,",")); #up to here it's fine
    }
    splice @with_commas,-2,1,("and ",$_[-1]);
    @with_commas;
  }

您可以告诉我,我正在尝试删除新数组中的最后一个元素(@with_commas),因为它附加了逗号,并添加旧数组中的最后一个元素(@_,传递给子例程)来自主程序,没有添加逗号).

当我运行它时,结果是,“1,4和5” – 最后用逗号表示.逗号来自哪里?只有@with_commas才能得到逗号.

任何帮助表示赞赏.

解决方法

sub format_list {
   return "" if !@_;
   my $last = pop(@_);
   return $last if !@_;
   return join(',',@_) . " and " . $last;
}

print format_list(@list),"\n";

与大多数其他答案不同,这也处理只包含一个元素的列表.

猜你在找的Perl相关文章