标签: perl-data-structures

如何申报AoHoAoH?

我有这个输出 Dumper

'group' => {
             '1104' => {
                         'a' => 1
                       },
             '52202' => {
                          'b' => 1,
                          'c' => 1
                        },
             '52201' => {
                          'c' => 1
                        },
             '52200' => {
                          'c' => 1
                        }
           },
Run Code Online (Sandbox Code Playgroud)

我假设是哈希数组哈希?

我想宣布这个结构是我自己的.

有没有办法做到这一点,所以下次我看到这么复杂的结构时,我可以立刻做到这一点?=)

arrays perl hash perl-data-structures

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

关于数据结构的Perl查询

我目前使用以下哈希工作正常

%hash = ( 
    'env1' => 'server1:port1, server11:port11',
    'env2' => 'server2:port2, server22:port22'
) ;

但是,我真正想要做的是创建以下数据结构,这将使我更容易提取信息.以下显然不起作用.

(
  env1 => "server=server1, port=port1", "server=server11, port=port11",
  env2 => "server=server2, port=port2", "server=server22, port=port22"
) ;

想知道是否有人对创建符合我要求的数据结构有任何建议.

perl hash data-structures perl-data-structures

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

使用未初始化的值

我正在尝试执行这个简单的代码,但它已经给我以下错误:

在permutation.pl第11行的字符串中使用未初始化的值$ string.

#!usr/bin/perl

use strict ;
use warnings ;



sub message {
my ($string) = @_ ;
print "$string" ;
    }
message() ;
Run Code Online (Sandbox Code Playgroud)

perl perl-data-structures

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

在面向对象的perl中隐藏属性

最近我使用chilkat perl库发送电子邮件

http://www.example-code.com/perl/smtp_simpleSend.asp

当我创建新对象

use chilkat();

#  The mailman object is used for sending and receiving email.
$mailman = new chilkat::CkMailMan();
$mailman->put_SmtpHost("smtp.chilkatsoft.com");
#  Set the SMTP login/password (if required)
$mailman->put_SmtpUsername("myUsername");
$mailman->put_SmtpPassword("myPassword");
Run Code Online (Sandbox Code Playgroud)

当我尝试使用Dumper方法打印对象时,它什么都不返回.

print Dumper($mailMan);
$VAR1 = bless( {}, 'chilkat::CkMailMan' );
Run Code Online (Sandbox Code Playgroud)

我们如何隐藏上面的祝福对象中的数据?

perl perl-module perl-data-structures

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

如何创建一个接受所有类型变量的子例程(标量,散列,数组或引用)

如何创建一个接受所有类型变量的子例程并确定它是否是(标量,散列,数组或引用)

sub know_var {
    my $this_var = shift;

    if ($this_var eq "array"){
        print "This variable is an array!";
    } elsif ($this_var eq "hash") {
        print "This variable is a hash!";
    } elsif ($this_var eq "hash ref") {
        print "This variable is an hash reference!";
    } so on..

}

my @array = ('foor', 'bar');
my %hash  = (1 => "one", 2 => "two");
my $scalar = 1;
my $scalar_ref = \$scalar;
my $hash_ref = \%hash;
my $arr_ref = \@array;

know_var(@array);
know_var($scalar_ref); …
Run Code Online (Sandbox Code Playgroud)

perl perl-data-structures

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

全局符号"@list"需要显式包名称错误

普通和简单的"新手perl代码不起作用,作者不知道为什么"问题:

sub print_hash {
    our %hash;
    my @list = sort {$hash{$a} <=> $hash{$b} keys %hash;            
    foreach my $name (@list) {
        printf "$name $hash{$name}";
    }   
}
Run Code Online (Sandbox Code Playgroud)

错误:

syntax error at ./freq line 27, near "my "
Global symbol "@list" requires explicit package name at ./freq line 27.
BEGIN not safe after errors--compilation aborted at ./freq line 27.
Run Code Online (Sandbox Code Playgroud)

我假设我以某种方式搞砸了我的范围.添加our %hash到排序eval根本没有帮助(抛出更多错误),并将其外包给sub也是如此.此代码几乎直接从哈希排序教程中窃取.我真的很感激我的错误解释!

syntax perl scope perl-data-structures

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

在数组的散列中拆分散列

我有三个哈希,我想将每个哈希分解成一个Hash of Arrays.每个都可以通过split函数传递给子程序,但是这需要调用3次相同的子程序.我试图遍历每个哈希并将它们拆分但没有成功.是否可以在不调用子程序的情况下执行此操作?我试过的代码是:

#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;

my %hash1 = (
    A => "AAAAAAAAAA",
    B => "AAAAANAAAA",
    C => "AAAAAXAAAA",
    D => "AAXAAAAAAA",
    E => "AAAAAAAAAX",
);

my %hash2 = (
    F => "BBBBBBBBBB",
    G => "BBBBBBBBBB",
    H => "BBXBBBBBBB",
    I => "BBBBBBBBBB",
    J => "AAAAANAAAA",
);

foreach my $ref ( \%hash1, \%hash2 ) {
    while ( my ($key, $value) = each %$ref) {
        @{ $ref->{$key} } = split (//, $value );
    }
}

print Dumper %hash1; …
Run Code Online (Sandbox Code Playgroud)

perl perl-data-structures

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

使用函数创建哈希

我正在尝试使用perl中的函数创建哈希.实际上我正在研究在perl中创建二叉搜索树.以下是代码:

sub newhash {
  $data = shift;
  $left = undef;
  $right = undef;
  %node = ("data"=>$data,"left"=>$left,"right"=>$right);
  return (\%node);
}

$firstele = newhash(2);
foreach ( keys %$firstele )
{
  print "$_:$firstele->{$_}\n";
}

$node = newhash(1);

foreach ( keys %$node )
{
  print "$_:$node->{$_} \n";
}

foreach ( keys %$firstele )
{
  print "$_:$firstele->{$_}\n";
}
Run Code Online (Sandbox Code Playgroud)

麻烦的是,当我打印原始哈希时,数据键被我传递给newhash函数的任何内容所取代.输出:

left:
right:
data:2
left:
right:
data:1
left:
right:
data:1
Run Code Online (Sandbox Code Playgroud)

任何想法为什么数据键被替换?

perl perl-data-structures

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

读取带有不均匀逗号但固定列数的CSV文件

我希望能够将此CSV文件读入数组或散列数组以进行操作.我该怎么办呢?

例如,我的文件包含以下内容(第一行是标题):

Name,Age,Items,Available
John,29,laptop,mouse,Yes
Jane,28,desktop,keyboard,mouse,yes
Doe,56,tablet,keyboard,trackpad,touchpen,Yes
Run Code Online (Sandbox Code Playgroud)

第一列是名称,第二列是Age,第三列是Items,但是项目可以包含多个以逗号分隔的内容,最后一列是Person可用性.

我怎样才能准确读到这个?

csv perl perl-data-structures

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