gpt4 book ai didi

perl - ERR 错误编译脚本(新函数): user_script:2: '=' expected near 'end' , .../lib/site_perl/5.8.7/Redis.pm 第 163 行

转载 作者:可可西里 更新时间:2023-11-01 11:04:09 24 4
gpt4 key购买 nike

我已经创建了基本的 lua 脚本来排除一个参数并打印它的值,使用 redis-cli 它的执行没有错误并且 o/p 被打印在日志文件中。

$ cat test.lua
redis.replicate_commands()
local var = ARGV[1]
print ( 'var ', var)
$ redis-cli --eval test.lua , A
nil
$

我想使用 perl 脚本运行 lua 脚本:

$ cat eval.pl
#!/usr/bin/perl

use strict;
use warnings;
use Redis;

my $r = Redis->new(
server => '127.0.0.1:6379',
reconnect => 3,
every => 1.5 * 1000000,
conservative_reconnect => 1,
no_auto_connect_on_new => 1,
cnx_timeout => 15,
);
eval {
$r->connect;
};
if ($@) {
print '$@ : '.$@;
}
my $result = $r->eval( "test.lua", 0, 'A' );
print "result : $result\n";
$

但是我得到了错误:

[eval] ERR 错误编译脚本(新函数):user_script:2: '=' expected near 'end' ,at/../lib/site_perl/5.8.7/Redis.pm 第 163 行

我的redis版本是1.991

错误信息的描述性不足以调试

Redis.pm第163行的代码是

 141 sub __with_reconnect {
142 my ($self, $cb) = @_;
143
144 ## Fast path, no reconnect
145 $self->{reconnect}
146 or return $cb->();
147
148 return &try(
149 $cb,
150 catch {
151 ref($_) eq 'Redis::X::Reconnect'
152 or die $_;
153
154 $self->{__inside_transaction} || $self->{__inside_watch}
155 and croak("reconnect disabled inside transaction or watch");
156
157 scalar @{$self->{queue} || []} && $self->{conservative_reconnect}
158 and croak("reconnect disabled while responses are pending and conservative reconnect mode enabled");
159
160 $self->connect;
161 $cb->();
162 }
163 );
164 }

我是否以错误的方式使用子评估?

最佳答案

检查 Redis documentation链接自 Redis , eval 方法似乎将脚本内容作为第一个参数,而不是文件名。

尝试

open my $SCRIPT, '<', 'test.lua' or die $!;
my $result = $r->eval( do { local $/; <$SCRIPT> }, 0, 'A' );

关于perl - ERR 错误编译脚本(新函数): user_script:2: '=' expected near 'end' , .../lib/site_perl/5.8.7/Redis.pm 第 163 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44523195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com