我试图把我看到的其他脚本拼凑在一起,以便循环浏览频道上的用户列表。
这是我想出的
my $channel = @_;
foreach my $nick ($channel->nicks()) {
$server->command("msg $chatchannel $nick->{nick}");
}但我所得到的只是
如果没有/root/..irssi/script/test.pl第64行的包或对象引用,就无法调用方法"nicks“。
它指的是
$channel->nicks()我是不是走错路了?还是应该起作用?我见过许多其他脚本使用$channel->nicks(),所以我知道它必须工作吗?
编辑
我还要指出,这已经在代码中得到了进一步的定义。
my ($server, $msg, $target, $channel, $chatnet) = @_;但是当我尝试使用$channel变量时,我得到
无法通过包"mattigins@mattigins.tmi.twitch.tv“找到对象方法"nicks”(也许您忘记加载“mattigins@mattigins.tmi.twitch.tv”了?)在/root/..irssi/script/test.pl第64行。
发布于 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?
发布于 2015-02-17 04:10:30
我想出了怎么做。
$chan = $server->channel_find('#channel');
foreach my $nick ($chan->nicks()) {
$nickname = $nick->{nick};
}https://stackoverflow.com/questions/28547180
复制相似问题