gpt4 book ai didi

perl - 为什么 Perl 会提示 "can' t 修改非左值子例程调用”?

转载 作者:行者123 更新时间:2023-12-01 11:08:42 24 4
gpt4 key购买 nike

我有 index.plsubs.pl。当我运行该程序时,用户插入出生日期,然后将其传递给 subs.pl 中的 getage() 子例程,该子例程有很多子例程。getage() 隐式调用另一个名为 validate() 的子例程,该子例程验证用户输入的日期。

当我运行 index.pl 并且用户将日期输入为 03-04-2005 时,会出现以下错误:

can't modify non-lvalue subroutine call at subs.pl line 85, <> line 1

subs.pl 的第 85 行,我有:

list(my $val,my @value) = validate($dob);

validate() 返回一条消息和从 getage() 发送的 date($dob)

一些来自 validate() 的代码:

sub validate {
my $dob = shift;
my $error;
my @test;
@test = split("-",$dob);
if (!@test) {
$error = "date separator should be - ";
return ($error,@test);
}
...

最佳答案

解决方案似乎是:

my ($val, @value) = validate($dob);

基于我对代码意图的直觉理解 - 但在您提供更多上下文之前我不能确定(validate() 返回什么,list() 返回什么 是什么意思?)

如果您的意思是将 list() 作为一种将 $val 和 @value 强制放入列表的方法,您只需要将两者括在括号中:($val, @value) 即可做到这一点

关于perl - 为什么 Perl 会提示 "can' t 修改非左值子例程调用”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2666224/

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