标签: perl-data-structures

我不明白这个Perl语法,有没有人有任何想法?

我从Perl插件中获得了这部分内容.我不明白它的作用.它是关联数组的数组吗?如果是这样,那么它不应该以@开头吗?任何人都可以对这个问题有所了解吗?

my $arguments =
  [ { 'name' => "process_exp",
    'desc' => "{BasePlugin.process_exp}",
    'type' => "regexp",
    'deft' => &get_default_process_exp(),
    'reqd' => "no" },
  { 'name' => "assoc_images",
    'desc' => "{MP4Plugin.assoc_images}",
    'type' => "flag",
    'deft' => "",
    'reqd' => "no" },
  { 'name' => "applet_metadata",
    'desc' => "{MP4Plugin.applet_metadata}",
    'type' => "flag",
    'deft' => "" },
  { 'name' => "metadata_fields",
    'desc' => "{MP4Plugin.metadata_fields}",
    'type' => "string",
    'deft' => "Title,Artist,Genre" },
  { 'name' => "file_rename_method",
    'desc' => "{BasePlugin.file_rename_method}",
    'type' => "enum",
    'deft' => &get_default_file_rename_method(), …
Run Code Online (Sandbox Code Playgroud)

arrays perl reference perl-data-structures

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

unpack函数没有给出类似的结果

我有一个二进制文件,并获得我使用"解包"功能的内容.

我的脚本可以运行32位exe或64位exe.因此我使用了以下代码:

if ( $ENV{PROCESSOR_ARCHITECTURE} eq 'x86' )
{
    @data = unpack( "LL8", $binary );
} 
else 
{
    @data = unpack( "Q8", $binary );
} 
    print Dumper \@data;  
Run Code Online (Sandbox Code Playgroud)

但是当我使用32位Active Perl和64位Active perl编译器执行相同操作时,我得到的结果不同:

32位:

$ VAR1 = [129864071,0,47193587,0,16448777,0,41067198,0,129];

64位:

$ VAR1 = [129864071,47193587,16448777,41067198,129,365173507,25208052,152155982]

造成这种差异的原因是什么?如何在仍然使用32位无符号长和64位无符号四元组值的同时使它们相似?

perl perl-module perl-data-structures

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

Perl长数据类型

我在Perl中编写一个需要长数据类型而不是整数的应用程序.我怎样才能做到这一点.例如;

my $num = sprintf('%ld', 27823221234);

print $num;
Run Code Online (Sandbox Code Playgroud)

输出不是很长,而是整数.

perl perl-data-structures

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

如何循环哈希?

给出以下变量:

$test = {
  '1' => 'A',
  '2' => 'B',
  '3' => 'C',
  '4' => 'G',
  '5' => 'K',
}
Run Code Online (Sandbox Code Playgroud)

如何在不知道我拥有哪些密钥的情况下循环完成所有分配?

我想填充一个选择框,其结果为标签,键为隐藏值.

perl hash perl-data-structures

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

如何在不重复二级密钥的情况下打印出复杂的哈希值?

嗨,我有一个哈希哈希,包含班级名称,注册学生人数和学生姓名.
如何打印此哈希而不重复第二级键.
示例:我填写的哈希数据是Science Class,3名学生就读于George,Lisa,Mathias和Math Class,4名学生注册了Peter,George,Anna,Martin.

my %register=();

$register{$className}->{$count_students}=$student_name; # Fill the hash.

  foreach my $key ( keys %register ){      

   print "$key: ";

   foreach my $class ( keys %{ $register{$key} } ){

       print "$class=$register{$key}->{$class}\n";

   }  
}
Run Code Online (Sandbox Code Playgroud)

我得到的结果如下:

Science_class:2 = Lisa
1 = George
3 = Mathias
Math_class:2 = Anna
1 = Martin
3 = Peter
4 = George

但我希望我的结果如下:

Science_class:3 - > Lisa,George,Mathias
Math_class:4 - > Anna,Martin,Peter,George

如何更正我的脚本?帮帮我.

perl hash perl-data-structures

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

从perl哈希结构中获取数据?

我正在尝试修改现有的perl脚本以支持地理编码.找到了这个模块:http://metacpan.org/pod/Geo :: Coder :: Google

我只是无法弄清楚如何从它返回的哈希结构中提取数据(我不是一个perl编码器,这只是我必须解决的一些遗留脚本).

       {
        'AddressDetails' => {
          'Country' => {
            'AdministrativeArea' => {
              'SubAdministrativeArea' => {
                'SubAdministrativeAreaName' => 'San Francisco',
                'Locality' => {
                  'PostalCode' => {
                    'PostalCodeNumber' => '94107'
                  },
                  'LocalityName' => 'San Francisco',
                  'Thoroughfare' => {
                    'ThoroughfareName' => '548 4th St'
                  }
                }
              },
              'AdministrativeAreaName' => 'CA'
            },
            'CountryNameCode' => 'US'
          }
        },
        'address' => '548 4th St, San Francisco, CA 94107, USA',
        'Point' => {
          'coordinates' => [
            '-122.397323',
            '37.778993',
            0
          ] …
Run Code Online (Sandbox Code Playgroud)

perl hash perl-data-structures

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

为什么我不能以类似哈希的格式打印哈希表?

我在Perl中有以下代码段:

my $a1 = [ qw(rock pop musical) ];  
my $b1 = [ qw( mystery action drama )];  
my $c1 = [ qw( biography novel periodical)];   

my %media = (  
    music => $a1,  
    file => $b1,  
    print => $c1   
);  
Run Code Online (Sandbox Code Playgroud)

我尝试按如下方式打印:

use Data::Dumper;  
print Dumper (%media);  
Run Code Online (Sandbox Code Playgroud)

我懂了:

$VAR1 = 'file';  
$VAR2 = [   
          'mystery',  
          'action',  
          'drama'  
        ];  
$VAR3 = 'music';  
$VAR4 = [  
          'rock',  
          'pop',  
          'musical'  
        ];  
$VAR5 = 'print';  
$VAR6 = [  
          'biography',  
          'novel',  
          'periodical'  
        ];  
Run Code Online (Sandbox Code Playgroud)

它像列表一样打印哈希.我所期待的是这样的东西,它表示它是一个哈希.

$VAR1 = …
Run Code Online (Sandbox Code Playgroud)

perl hash perl-data-structures

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

将哈希元素初始化为0

我通过这样做在Perl中声明了一个哈希:

my %hash = ();
Run Code Online (Sandbox Code Playgroud)

我继续向哈希添加元素.有时,$hash{$x}没有定义,意味着它可能是null.因此,当我尝试打印它时,我什么也得不到.我希望0$x没有定义条目的情况下看到.有人能告诉我该怎么做?如何初始化哈希元素0

perl hashcode perl-data-structures

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

添加一个空数组到哈希

有什么区别:

my %x;
push @{$x{'12'}}, ();
Run Code Online (Sandbox Code Playgroud)

和:

my %y;
$y{'12'} = ();
Run Code Online (Sandbox Code Playgroud)

为什么以下工作x而不是y

my @x1 = @{$x{'12'}}; #legal
my @y1 = @{$y{'12'}}; #illegal
Run Code Online (Sandbox Code Playgroud)

perl data-structures perl-data-structures

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

打印@array和在perl中打印"@array"有什么区别?

考虑以下代码,例如:

@array=(1..10);
print @array;
print "@array";

The output is as follows:
12345678910
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)

perl perl-data-structures

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