gpt4 book ai didi

perl - 如何在具有传递引用的子例程中使用 PDL rcols?

转载 作者:行者123 更新时间:2023-12-01 04:15:53 25 4
gpt4 key购买 nike

具体来说,我想将 rcols 与 PERLCOLS 选项一起使用。

这是我想要做的:

my @array;
getColumn(\@array, $file, 4); # get the fourth column from file

如果我用 \@array 就可以了,但为了向后兼容,我不想这样做。这是我使用数组引用引用的方法:
sub getColumn {

my ($arefref, $file, $colNum) = @_;

my @read = rcols $file, { PERLCOLS => [$colNum] };
$$arefref = $read[-1];

return;
}

但是,我不知道如何创建一个以数组 ref 作为参数的子例程而不说 @$aref = @{$read[-1]} 之类的东西。 ,它,afaic,单独复制每个元素。

PS:阅读 PDL::IO::Misc documentation ,似乎 perl 数组应该是 $read[0]但事实并非如此。

PERLCOLS - an array of column numbers which are to be read into perl arrays rather than piddles. Any columns not specified in the explicit list of columns to read will be returned after the explicit columns. (default B).



我正在使用 PDL v2.4.4_05 和为 x86_64-linux-thread-multi 构建的 Perl v5.10.0

最佳答案

我不明白为什么这不起作用:

my $arr_ref;
getColumn( $arr_ref, $file, 4 );

sub getColumn {
my ( $arr_ref, $file, $colNum ) = @_;

my @read = rcols, $file, { PERLCOLS => [ $colNum ] };
# At this point, @read is a list of PDLs and array references.

$arr_ref = $read[-1];
}

看着 rcols()文档,看起来如果你添加 PERLCOLS选项它将您请求的任何列作为数组引用返回,因此您应该能够将它分配给您传入的数组引用。

至于文档问题,我从中了解到的是您没有指定任何明确的列,因此 rcols()将首先将文件中的所有列作为 PDL 返回,然后将您请求的列作为 Perl 数组引用返回,这就是为什么您的数组引用出现在 $read[-1] 中的原因。 .

关于perl - 如何在具有传递引用的子例程中使用 PDL rcols?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868153/

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