小编use*_*084的帖子

Perl:使用rule1通过ref传递哈希值

我仍然不清楚由参部分原因是显示为不定值%Q$_初始化.我一直在寻找perlreftut,仍然无法看到我做错了什么.将散列作为平面数组传递没有问题.

通过ref执行它testRef(\%mkPara)会传递对子例程的标量哈希引用,对吧?那么,是my %Q = %{$_}不是把它变回哈希?

use strict;
use diagnostics;
use warnings;

my %mkPara = ('aa'=>2,'bb'=>3,'cc'=>4,'dd'=>5);

sub testFlat
{
    my %P = @_;
    print "$P{'aa'}, $P{'bb'}, ", $P{'cc'}*$P{'dd'}, "\n";  
}

sub testRef
{
    my %Q = %{$_}; #can't use an undefined value as HASH reference
    #print  $_->{'aa'}, "\n";#Use of uninitialized value
    print $Q{'aa'},"\n";
}

#testFlat(%mkPara);
testRef(\%mkPara); 
Run Code Online (Sandbox Code Playgroud)

perl hash

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

Perl:将两个哈希值传递给 sub

下面是一个小子程序,通过传递两个散列(每个散列包含 x 和 y 坐标)来计算两点之间的距离。我在调用子函数的行上收到“语法错误接近]{”致命错误。昨天刚开始使用 Perl,不太确定我在做什么。如何将两个哈希值传递给子函数以返回值?尝试但没有取得多大成功,并且不确定我需要做什么(希望可以参考外部链接)。

%dot1 = ('x'=>5, 'y'=>6);
%dot2 = ('x'=>7, 'y'=>8);

sub dist {
    my (%hash1) = @_[0];
    my (%hash2) = @_[1];

    $dist = ((@_[0]{'x'}-@_[1]{'x'})**2 + (@_[0]{'y'}-@_[1]{'y'})**2)**0.5;
}


$D = dist(\%dot1,\%dot2);
Run Code Online (Sandbox Code Playgroud)

perl hash parameter-passing

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

Perl:切片哈希数组

以下代码的输出始终为空.不确定我做错了什么,并希望得到任何帮助.如何获取散列数组中特定散列中键的值?

use strict;
use warnings;

my %dot1 = ('a'=>1,'b'=>2);
my %dot2 = ('a'=>3,'b'=>4);
my %dot3 = ('a'=>5,'b'=>6);
my %dot4 = ('a'=>7,'b'=>8);

my @array = (%dot1,%dot2,%dot3,%dot4);

my %x = $array[2];
my $y = $x->{'a'};

print "$y \n";
Run Code Online (Sandbox Code Playgroud)

arrays perl slice

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

Perl:相当于VBA中的"ubound"

现在,在Perl的第2天,我看到数组也以元素(0)开头,如何在VBA中获取数组的最后一个索引,如ubound而不是使用标量(@array)的大小?

使用$ size = $#array是一种好方法还是有类似于标量(@array)的东西?

arrays perl

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

Perl:数组和哈希

进一步找到我之前的问题Perl的答案:切割一系列哈希,我再次陷入困境,无法看到我做错了什么.

我拥有的是什么

数组(Array0(Hash0,Hash1),Array1(Hash0,Hash1),Array2(Hash0,Hash1)...)

use strict;
use warnings;

my @DDs = ();
my @Ds  = ();
my %hsh = ();

my %dot1 = ( 'x' => 1,   'y' => 2,   'r' => 3 );
my %dot2 = ( 'x' => 4,   'y' => 5,   'r' => 6 );
my %dot3 = ( 'x' => 7,   'y' => 8,   'r' => 9 );
my %dot4 = ( 'x' => 1.1, 'y' => 1.2, 'r' => 1.3 );
my …
Run Code Online (Sandbox Code Playgroud)

arrays perl

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

标签 统计

perl ×5

arrays ×3

hash ×2

parameter-passing ×1

slice ×1