我是一名初学程序员,正在使用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 这是我正在使用的数据
答案 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
答案 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{$_}_);
}
但这将涉及使用数组引用,听起来它可能对您当前的课程有点先进。
这种方法的一个优点是,如果您希望在输入数据中添加新的性别,它将继续工作(无需更改代码)!