我一直在尝试为服务器使用抒情机器人,但是在开始对其进行操作之前,我想对其进行测试,因此我使用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);

10-07 12:09