标签: arrayref

Perl内联C:将Arrayref传递给C函数

我无法使用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 inline-c arrayref

12
推荐指数
2
解决办法
1087
查看次数

在Perl中将浅拷贝引用转换为变量

在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 shallow-copy arrayref

7
推荐指数
2
解决办法
3081
查看次数

perl加入数组引用

我是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)

有人可以在这方面帮助我吗?

perl join arrayref

7
推荐指数
1
解决办法
5758
查看次数

引用键的参数类型必须是非散列的hashref或arrayref

    if((scalar keys ($this->{'libraries'}->{$y}->{'cellHash'})) == 0){
Run Code Online (Sandbox Code Playgroud)

这是我得到"引用键的参数类型必须是unblessed hashref或arrayref"错误的行.你能帮我解决这个问题吗?我没有出于明显的原因发布代码.

perl hashref arrayref

4
推荐指数
1
解决办法
1万
查看次数

Perl selectall_array - 从数组引用的数组中检索所有数据

我正在使用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)

arrays perl dbi arrayref

2
推荐指数
1
解决办法
3407
查看次数

Perl数组引用总是在循环中重写自身

我试图从文本文件中读取一些数字并将其存储为二维数组.我读了一行并推入另一个数组作为数组引用.但是我注意到主数组在所有行中只有最后一行.我怎么能纠正这个?提前致谢.这是我做的部分.

open IN, "a.txt";
@b=();

while (<IN>)

 { 
  $t =$_; 
  @a = split /\s+/,$t; 
  push(@b, \@a); 
 }
Run Code Online (Sandbox Code Playgroud)

arrays perl arrayref

0
推荐指数
1
解决办法
68
查看次数

标签 统计

arrayref ×6

perl ×6

arrays ×2

dbi ×1

hashref ×1

inline-c ×1

join ×1

shallow-copy ×1