gpt4 book ai didi

perl - 从 perl 子程序返回多个数组

转载 作者:行者123 更新时间:2023-12-05 08:18:41 27 4
gpt4 key购买 nike

我给 perl 子例程提供了四个参数,例程使用它们创建了两个单独的数组 @temp_V@temp_t。当我尝试将它们返回到我的主程序时,我不再得到两个单独的数组。 @temp_t 中的值附加 @temp_V,给我一个数组。

如何解决这个问题?这是我的代码:

$Vmin=-5;
$Vmax=5;
$N_pulses=5;
$Freq=25e3;

my (@V, @t)=create_FORC($Vmin,$Vmax,$Freq,$N_pulses);

print "@V \n\n\n";
#print "@t \n";

sub create_FORC($Vmin,$Vmax,$Freq,$N_pulses)
{
my $Vmin=shift;
my $Vmax=shift;
my $Freq=shift;
my $N_pulses=shift;

my $rtime=1/(4*$Freq);
#print "$rtime \n";

undef @temp_V;
undef @temp_t;

push(my @temp_V,0);
push(my @temp_t,0);

push(@temp_V,$Vmin);

for (my $pulse=0;$pulse<$N_pulses;$pulse++)
{
$V_peak=($Vmax-$Vmin)/$N_pulses*($pulse+1)+$Vmin;
$del_t=($V_peak-$Vmin)*$rtime;
push(@temp_V,$V_peak);
push(@temp_V,$Vmin);
push(@temp_t,$del_t);
}
push(@temp_V,0);

print "@temp_V \n";
print "@temp_t \n";

return (@temp_V, @temp_t);

}

最佳答案

你不能。当你从一个 sub 返回一些东西时,Perl 返回一个列表。没有关于数组中有多少元素在从 sub 出来之前的信息。

列表在 Perl 中是扁平的。它们不能嵌套。

(1, 2, (3, 4), ((), 5, (6)), 7)

这相当于:

(1, 2, 3, 4, 5, 6, 7)
((1), (2), (3), (4), (5), (6), (7))

如果要返回两个不同的数组,则需要返回对它们的引用。

sub foo {
my @bar = qw/a b c/;
my @qrr = qw/1 2 3/;

return \@bar, \@qrr;
}

my ($letters, $numbers) = foo();

然后您可以将它们解引用到数组变量中,或直接访问它们。

参见 perlreftutperlref有关引用的更多信息。

关于perl - 从 perl 子程序返回多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55299734/

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