魏新雨恋人心:mp3开机程序怎么编写

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 15:36:14

用已知的命名结构浏览 MP3 文件的目录并抽取专辑名。让我们假设文件名是“Artist-Album-Track#-Song.mp3”。

清单 5. 查找 Artist-Album-Track#-Song.mp3 的专辑名
> find . -name "*.mp3" | perl -pe 's/.\/\w+-(\w+)-.*/$1/' | sort | uniq

这个脚本非常简单。它依靠 find 的行为,总是在每个文件名前打印“./”。随后它仅用专辑名代替 $_,并且 -p 开关自动打印专辑名。最后,按顺序的 sort 和 uniq 确保了重复的专辑名只打印一次。所有的 find、sort 和 uniq 调用都可以用 Perl 完成,但是在操作系统已经为我们编写了这一切时为何还烦恼呢?作为练习这会很有趣,但是实际上一行程序可能会变成 20-30 行不必要的代码。

让我们分解 Perl 脚本(用一种简化的方式 - 省略 -p 开关的一些复杂性):

清单 6. 查找 Artist-Album-Track#-Song.mp3 的专辑名(已分解)
while (<>)
{
s/.\/\w+-(\w+)-.*/$1/; # extract the album name into $_
} continue
{
print; # print the album name
}

此外,请注意 Perl 是如何成为 find、sort 和 uniq 之间的中间工具的。不必尝试用 Perl 编写所有东西。您可以这么做,有时也必须这么做,但一行程序可以重用。还有,看看正则表达式是多么的简单。当然,如果 MP3 文件未正确命名,那么我们可能会获得一些异常的专辑名,但是这值得去尽力完善正则表达式吗?如果您需要做大量工作,那么或许该使用 CPAN MP3 ID3 标记模块,而不是解析文件名。要明白:在什么时候一行程序会成为一桩麻烦事,而不是一个工具。这就是我在前面说到在开始使用一行程序之前应该非常清楚 Perl 时所指的意思。在编程方法中使用所有工具会使您成为一名优秀的 Perl 程序员,同时也成为一名优秀的程序员。

事实上我也很想知道

我也很想知道啊,