我一直在尝试为服务器使用抒情机器人,但是在开始对其进行操作之前,我想对其进行测试,因此我使用Lyrics :: Fetcher模块提出了此脚本。
use strict;
use warnings;
use Lyrics::Fetcher;
my ($artist, $song) = ('Coldplay', 'Adventures Of A Lifetime');
my $lyrics = Lyrics::Fetcher->fetch($artist, $song, [qw(LyricWiki AstraWeb)]);
my @lines = split("\n\r", $lyrics);
foreach my $line (@lines) {
sleep(10);
print $line;
}
该脚本可以正常工作,可以抓取歌词并将其整体打印出来(这不是我想要的)。
我希望能每10秒逐行打印一次歌词。请帮助?
最佳答案
您对split
的呼叫看起来可疑。特别是正则表达式"\n\r"
。请注意,split的第一个参数始终被解释为正则表达式,而不管是否提供带引号的字符串。
在Unix系统上,行尾通常为"\n"
。在DOS / Windows上,它是"\r\n"
(与您所拥有的相反)。在古代Mac电脑上是"\r"
。要匹配所有功能,您可以:
my @lines = split(/\r\n|\n|\r/, $lyrics);