首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在通道中通过用户的Irssi循环

在通道中通过用户的Irssi循环
EN

Stack Overflow用户
提问于 2015-02-16 17:38:01
回答 2查看 312关注 0票数 2

我试图把我看到的其他脚本拼凑在一起,以便循环浏览频道上的用户列表。

这是我想出的

代码语言:javascript
复制
my $channel = @_;
foreach my $nick ($channel->nicks()) {
    $server->command("msg $chatchannel $nick->{nick}");
}

但我所得到的只是

如果没有/root/..irssi/script/test.pl第64行的包或对象引用,就无法调用方法"nicks“。

它指的是

代码语言:javascript
复制
$channel->nicks()

我是不是走错路了?还是应该起作用?我见过许多其他脚本使用$channel->nicks(),所以我知道它必须工作吗?

编辑

我还要指出,这已经在代码中得到了进一步的定义。

代码语言:javascript
复制
my ($server, $msg, $target, $channel, $chatnet) = @_;

但是当我尝试使用$channel变量时,我得到

无法通过包"mattigins@mattigins.tmi.twitch.tv“找到对象方法"nicks”(也许您忘记加载“mattigins@mattigins.tmi.twitch.tv”了?)在/root/..irssi/script/test.pl第64行。

EN

回答 2

Stack Overflow用户

发布于 2015-02-16 18:26:37

由于my $channel = @_;的左手侧是一个标量,它将标量上下文强加给@_数组。这意味着数组的长度被分配给$channel。您希望使用my ($channel) = @_;分配LHS,以便LHS处于列表上下文中,并将@_数组中的第一个元素分配给标量。

参考:

What is the difference between the scalar and list contexts in Perl?

Scalar and List context in Perl

票数 2
EN

Stack Overflow用户

发布于 2015-02-17 04:10:30

我想出了怎么做。

代码语言:javascript
复制
$chan = $server->channel_find('#channel');
foreach my $nick ($chan->nicks()) {
    $nickname = $nick->{nick};
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28547180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档