【发布时间】:2017-12-17 21:11:51
【问题描述】:
我正在尝试从源 (https://tmi.twitch.tv/group/user/twitchpresents/chatters) 中提取所有用户名,但到目前为止我只能得到第一个“名称”。 目标是将所有名称放入一个数组中,然后只删除“viewers”、“admins”、“staff”等名称。
use strict;
use warnings;
my @listusers = userlist();
sub userlist {
my $url = "https://tmi.twitch.tv/group/user/twitchpresents/chatters";
my $array = get($url);
my @array2;
my $time = 0;
while ($time != 2){
my $mylist = (join "",grep(/"\s*(.*?)\s*"/, $array[$time])) =~ /"\s*(.*?)\s*"/;
print $1;
$time++;
}
return @array2;
}
print @listusers;
【问题讨论】:
-
哦,我明白了。你应该在循环内
push(@array2, $1)。而且,$mylist 只获取匹配结果 bool。因此,如果是 $mylist,则打印并存储 $1。 -
这是有效的 JSON - 所以恕我直言,最好使用一些 JSON 解析器。
-
此代码不会像发布的那样编译。
$array[$time]应该是$array->[$time],因为它是一个数组引用。然后:为什么要返回一个数组@array2,如果它没有任何内容?或者,相反,如果您返回my @array2,为什么还要执行所有这些代码:P。最重要的是:是的,请使用 JSON 解析器。
标签: regex perl extract text-mining twitch