【问题标题】:Retrieving filtered list of files using template toolkit使用模板工具包检索过滤的文件列表
【发布时间】:2015-10-28 06:00:19
【问题描述】:

我想检索目录中满足给定正则表达式规则或字符串(例如 ./*.xml)的文件的内容。

我找到了下面的例子

[% FOREACH directory.files.grep('\.txt$') %]
   ...
[% END %]

但是不知道怎么用。这能解决我的问题吗?

【问题讨论】:

  • @ThisSuitIsBlackNot,看了看,不幸的是没有发现任何有用的东西......
  • 您到底遇到了什么问题?您不知道如何更改正则表达式以匹配 .xml 文件?你不知道如何指定目录的路径? (我上面链接的文档显示了如何。)还有什么?
  • Template::Plugin::Directory 根据路径输入返回给定路径中的文件和目录列表。我无法做到:目录('./*.xml')。我只是得到一个错误(目录('./')有效)。你知道如何告诉 Template::Plugin::Directory 返回具有给定规则的文件列表(例如 *.xml)吗?

标签: perl template-toolkit


【解决方案1】:

快速查看文档表明directory.files 的输出是对象的集合,因此.grep() 不太可能工作。它有nameisdir等方法。

最简单的解决方案是这样的:

[%- FOREACH file IN directory.files;
        #NEXT UNLESS file.name.match('\.xml$');
        NEXT UNLESS file.ext == 'xml';
        ...
    END -%]

编辑:根据ThisSuitIsBlackNot 的建议改进答案。

【讨论】:

  • 另外,由于Template::Plugin::File 提供file extensionNEXT UNLESS file.ext == 'xml';
猜你喜欢
  • 2014-12-04
  • 2011-01-22
  • 2016-05-23
  • 2013-05-03
  • 2014-02-12
  • 2023-04-04
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
相关资源
最近更新 更多