我无法使用Inline C将arrayrefs传递给C函数.我想请一些帮助.
首先,为了证明我可以让Inline C工作,我会将标量值传递给C函数:
#!/usr/bin/perl -I.
#
# try1.pl
#
use Inline C;
my $c = 3.8;
foo( $c );
__END__
__C__
void foo( double c )
{
printf( "C = %f\n", c );
}
Run Code Online (Sandbox Code Playgroud)
并运行它:
% ./try1.pl
C = 3.800000
Run Code Online (Sandbox Code Playgroud)
现在做同样的事情,但使用arrayref:
#!/usr/bin/perl -I.
#
# try2.pl
#
use Inline C;
my @abc = (1.9, 2.3, 3.8);
foo( \@abc );
__END__
__C__
void foo( double *abc )
{
printf( "C = %f\n", abc[2] );
}
Run Code Online (Sandbox Code Playgroud)
运行:
% ./try2.pl
Undefined subroutine …Run Code Online (Sandbox Code Playgroud) 在Perl中,您可以为变量分配对另一个变量的引用,如下所示:
my @array = (1..10);
my $ref = \@array;
Run Code Online (Sandbox Code Playgroud)
而且,因为它是一个参考,你可以做这样的事情,这两个变量都会受到影响:
push @array, 11;
push @$ref, 12;
Run Code Online (Sandbox Code Playgroud)
并且两个变量都将包含1..12,因为它们都指向相同的空间.
现在,我想知道是否有任何方法可以做同样的事情,但从ref开始,然后将该引用分配给普通变量.例如:
my $ref = [1..12];
my @array = # something here that makes @array point to the same space $ref contains
Run Code Online (Sandbox Code Playgroud)
我知道我可以像这样分配它:
my @array = @$ref;
Run Code Online (Sandbox Code Playgroud)
但是,这是一份副本.如果我改变$ ref或@array,那些将是独立的改变.
有没有办法让@array指向与$ ref相同的变量?
我是perl的新手.
我试图使用连接与数组引用,但它不起作用.
这是我的代码.
my $arr = {
'items' => ('home', 'chair', 'table')
};
my $output = join(',', $arr->{'items'});
print $output;
Run Code Online (Sandbox Code Playgroud)
这是印刷
table
Run Code Online (Sandbox Code Playgroud)
代替
home,chair,table
Run Code Online (Sandbox Code Playgroud)
有人可以在这方面帮助我吗?
if((scalar keys ($this->{'libraries'}->{$y}->{'cellHash'})) == 0){
Run Code Online (Sandbox Code Playgroud)
这是我得到"引用键的参数类型必须是unblessed hashref或arrayref"错误的行.你能帮我解决这个问题吗?我没有出于明显的原因发布代码.
我正在使用DBI selectall_array从 mysql 中获取所有数据。我的查询每行返回 1 列。但该selectall_array函数为每行返回一个数组 ref 的数组,如下所示
$VAR1 = [
'1.ptmp'
];
$VAR2 = [
'e1.ptmp'
];
$VAR3 = [
's2.ptmp'
];
$VAR4 = [
'sw1.ptmp'
];
$VAR5 = [
'w1.ptmp'
];
Run Code Online (Sandbox Code Playgroud)
我想要的是一种将所有域提取到单个数组(无引用)中的方法,或者是否有一个 DBI 函数可以返回没有任何引用的完整数据数组?我不想循环遍历所有数据或fetchrow_array在 while 循环中执行操作。如果可能的话,正在寻找一个单一的语句来完成这一切吗?
请参阅下面我的代码:
my @mysqldata = $dbh->selectall_array('SELECT `domain` FROM dfs WHERE `id` IN ('.join(',',('?')x(scalar(@params))).')', {}, @params);
my @minus = array_minus( @all, @mysqldata );
Run Code Online (Sandbox Code Playgroud) 我试图从文本文件中读取一些数字并将其存储为二维数组.我读了一行并推入另一个数组作为数组引用.但是我注意到主数组在所有行中只有最后一行.我怎么能纠正这个?提前致谢.这是我做的部分.
open IN, "a.txt";
@b=();
while (<IN>)
{
$t =$_;
@a = split /\s+/,$t;
push(@b, \@a);
}
Run Code Online (Sandbox Code Playgroud)