2

チャンネル上のユーザーのリストをループできることがわかった他のスクリプトをまとめようとしています。

これが私が思いついたものです

my $channel = @_;
foreach my $nick ($channel->nicks()) {
    $server->command("msg $chatchannel $nick->{nick}");
}

しかし、そこから得られるのは

/root/.irssi/scripts/test.pl 行 64 で、パッケージまたはオブジェクト参照なしでメソッド「nicks」を呼び出すことはできません。

を参照している

$channel->nicks()

私はこれについて間違った方法をとっていますか?またはこれが機能する必要がありますか?$channel->nicks() を使用する他の多くのスクリプトを見たので、それが機能する必要があることを知っていますか?

編集

また、これはコードのさらに上ですでに定義されていることにも言及する必要があります

my ($server, $msg, $target, $channel, $chatnet) = @_;

しかし、その $channel 変数で試してみると、

/root/.irssi/scripts/ で、パッケージ「mattigins@mattigins.tmi.twitch.tv」を介してオブジェクト メソッド「nicks」を見つけることができません (おそらく「mattigins@mattigins.tmi.twitch.tv」をロードするのを忘れていませんか?) test.pl 64 行目。

4

2 に答える 2

2

の左辺 (LHS) はスカラーなので、配列my $channel = @_;にスカラー コンテキストを課します。@_これは、配列の長さが に割り当てられることを意味し$channelます。my ($channel) = @_;LHS がリスト コンテキストにあり、@_配列の最初の要素がスカラーに割り当てられるように割り当てたいとします。

参照:

Perl のスカラー コンテキストとリスト コンテキストの違いは何ですか?

Perl のスカラーおよびリスト コンテキスト

于 2015-02-16T18:26:37.573 に答える