【发布时间】:2019-03-17 02:00:47
【问题描述】:
我正在尝试浏览将单词拼凑在一起的文件列表并将单词分开。
my @file_list = (
'myfirstperlfile.pl',
'mashpotatorecipes.pl',
'badhaircuts.pl',
'jonisntverygoodatsoftball.pl',
'thatnewcomedianislol.pl',
);
我的列表可以用任何东西来描述,但为了示例,它可能看起来像这样。
my @delineated_file_list = (
'my first perl file',
'mash potato recipes',
'bad haircuts',
'jon isnt very good at soft ball',
'that new comedian is lol',
);
在我的特殊情况下,文件很多,因此查找静态词并不理想。
perl 最好知道 my,first,perl 和 file 是单独的词吗?我还担心识别缩写、拼写错误或假词。
【问题讨论】:
-
这样做的目的是什么——为什么需要将脚本名称分解成单词?在这种情况下,对错误的容忍度是多少?你不能在没有任何其他线索的情况下将一堆粘在一起的词正确地解析成语言。
-
我有两个文件,一个插件文件和它打算用于的文件。插件文件以使用它的文件命名。例如,cgi-bin/folder/new_folder/abc_script.pl 将使用名为 cgibin_folder_newfolder_abcscript.pm 的插件。有些文件没有遵循格式,所以我想编写一个测试,查看 cgibin_folder_newfolder_abcscript.pm 并查看其父脚本是否存在。
-
啊,我明白了。我不认为需要 language 来做到这一点(这是一件好事,因为这很难:)。当您选择需要搜索其祖先的文件时,请对预期父目录中的文件列表中的每个文件名使用正则表达式。毕竟,您正在搜索匹配的单词,对吗?正则表达式可以以您需要的所有灵活性做到这一点,而无需进行语言分析。
-
一个简单的示例:
my $patt = qr/abc.*script/i; for (@files) { if (/$patt/) { ... } },您可以在其中构建$patt以考虑预期的变化。