" push'的等效哈希函数是什么? perl中的数组?

时间:2015-07-13 15:18:29

标签: arrays perl hash

我是一名初学程序员,正在使用perl编写程序,最终允许我搜索名称,并让它告诉我早期的步骤。到目前为止(在这里很多好人的帮助下)我有这个代码用于数组格式。

$row['rowCount'];

我尝试使用相同的代码将其放入哈希值。

#!/usr/local/bin/perl
use strict;
use warnings;

my @M_array;
my @F_array; 
open (my $input, "<", 'ssbn1898.txt');
while ( <$input> ) {

    chomp;

   my ( $name, $id ) = split ( /,/ ); 


    if ( $id eq "M" ) {

        push ( @M_array, $name );
    }
    else {
        push ( @F_array, $name ); 
    }
}
close ( $input );
print 'M: ' . join("\t", @M_array) . "\n"; 

print 'F: ' . join("\t", @F_array) . "\n"; 

但是我在&#34;推送&#34;功能。我会假设这个函数只适用于数组。哈希是否有等效函数?什么是&#34;推&#34;功能真的吗? 谢谢大家的帮助

http://www.ourbabynamer.com/popular-baby-names.php?year=1898&top=1000&country=US&order=0&page=1 这是我正在使用的数据

4 个答案:

答案 0 :(得分:3)

Push将一个元素添加到数组的后面。

@a = ( 1, 2, 3 );

push @a, 4;  # @a is now ( 1, 2, 3, 4 )

Insert会向哈希添加元素。

%h = ( foo => 1, bar => 2 );

$h{ qux } = 3;    # %h is now ( foo => 1, bar => 2, qux => 3 );

看看perldoc perlintro

http://perldoc.perl.org/perlintro.html

答案 1 :(得分:2)

push在数组末尾添加一个元素。哈希没有结束,所以没有哈希的等价物。您需要指定要设置的元素的键。

$hash{$key} = $val;

我不知道为什么你把数组改成哈希。在这里使用哈希是没有意义的。解决方案是恢复您的更改。

答案 2 :(得分:1)

推送适用于数组,请参阅:http://perldoc.perl.org/functions/push.html

哈希与数组不同,它们就像关联数组。它们是无序的键值对组。要为哈希添加一些键,您可以执行以下操作:

my %hash = (key1 => "value1", key2 => "value2");
$hash{"key3"} = "value3";

请注意,密钥必须是唯一的。

另见:

答案 3 :(得分:1)

在评论中,您说您必须将此数据用作数组和散列&#34;。我不太确定你的意思,但一种可能的解释是你的老师希望你在你的代码中使用哈希和数组。

这样做的一种方法是将数据存储在数组的散列中。它看起来像这样。

#!/usr/local/bin/perl

use strict;
use warnings;
use 5.010;

my %data;

while ( <> ) { # Use <> to read from STDIN. Makes life easier :-)
  chomp;

  my ( $name, $gender ) = split /,/; 

  push @{$data{$gender}}, $name;
}

foreach (keys %data) {
  say "$_: " . join("\t", @{$data{$_}_); 
}

但这将涉及使用数组引用,听起来它可能对您当前的课程有点先进。

这种方法的一个优点是,如果您希望在输入数据中添加新的性别,它将继续工作(无需更改代码)!