这个Perl语法构造是什么?

街头霸王

我对前面的文章按数字值排序文件名有一个后续问题

解决方案是这段代码:

opendir(XMLDIR,$xmldirname);
my @files = sort {substr($a, 0, index($a, '.')) <=> substr($b, 0, index($b, '.'))} readdir(XMLDIR);

我真的不了解readdir前面的整个{...}到底在做什么,或者更确切地说,它是如何做的。当然,我可以看到两个值相互比较。但是整件事是什么样的语法构造?$ a和$ b来自哪里?我可以在Perl书中的哪个标题下查找?这是仅与sort {}一起使用的特殊功能吗?还是还有其他使用此构造的方法?

池上

采用的语法sort

sort BLOCK LIST

以表示的表达式LIST是返回要排序的值列表。这是readdir(XMLDIR)您的情况。它返回目录中文件名的列表。

BLOCK是有趣的部分。它表示杂乱无章的代码,由排序算法调用以与要排序的元素进行比较。比较元件被设置为$a$b,以及将码应评估为以下之一:

  • 如果将负值$a放在之前$b
  • 如果$a相对于$b,或放在何处无关紧要为零
  • 如果$a应在后面加上一个正值$b

substr($a, 0, index($a, '.'))提取文件名中位于first之前的部分.在这种情况下,将提取文件名中的数字。

然后,从两个文件名中提取的数由数字比较<=>,重新调谐-10+1如上文所述。


请注意,您的代码会发出警告,因为它不考虑readdir会返回.和的代码..我通过为您的原始问题添加答案解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

这个Perl语法是什么意思?

来自分类Dev

这个 vba 语法是什么?

来自分类Dev

这个语法“ ...”(省略号)是什么?

来自分类Dev

这个Javascript开放语法是什么?

来自分类Dev

这个语法是什么意思?

来自分类Dev

这个zsh的语法含义是什么?

来自分类Dev

这个CSS语法是什么意思?

来自分类Dev

这个语法是什么意思?

来自分类Dev

这个 Swift 语法是什么意思?

来自分类Dev

这个语法是什么意思 JAVASCRIPT

来自分类Dev

这个语法是什么意思 (...)

来自分类Dev

这个scala语法是什么意思?

来自分类Dev

这个python数组语法是什么

来自分类Dev

这个Groovy构造是做什么的,语法如何工作?

来自分类Dev

这个语法是什么意思?Func <任务,TResult> sampleFunction

来自分类Dev

这个语法在Swift中是什么意思?

来自分类Dev

这个JS对象声明语法是什么意思?

来自分类Dev

无法弄清楚这个语法错误是什么

来自分类Dev

这个PHP语法是什么意思?(问号)

来自分类Dev

这个语法中的开始符号是什么?

来自分类Dev

这个CSS3语法的名称是什么?

来自分类Dev

这个语法在Swift中是什么意思?

来自分类Dev

这个语法是什么意思:const foo = () => {}

来自分类Dev

这个奇怪的 SASS 属性语法是什么?

来自分类Dev

这个std :: string构造函数的含义是什么

来自分类Dev

这个带点的构造函数名称是什么

来自分类Dev

此构造函数语法的名称是什么?

来自分类Dev

模板构造函数继承的标准符合语法是什么?

来自分类Dev

在构造函数之后覆盖方法的部分的 Java 语法是什么?