Я начинающий программист, который пишет программу с использованием perl, которая в конечном итоге позволит мне искать имя и сообщить мне о ранних шагах. (с помощью многих хороших людей на здесь) у меня есть этот код для формата массива.Что такое эквивалентная хэш-функция массивов «push» в perl?
#!/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";
И я пытался использовать один и тот же код, чтобы поместить его в хэш.
#!/usr/local/bin/perl
use strict;
use warnings;
my %M_hash;
my %F_hash;
open (my $input, "<", 'ssbn1898.txt');
while (<$input>) {
chomp;
my ($name, $id) = split (/,/);
if ($id eq "M") {
push (%M_hash, $name);
}
else {
push (%F_hash, $name);
}
}
close ($input);
print 'M: ' . join("\t", %M_hash) . "\n";
print 'F: ' . join("\t", %F_hash) . "\n";
Но я получить ошибку в функции «push». Я предполагаю тогда, что эта функция предназначена только для массивов. Существует ли эквивалентная функция на хэш? И что действительно делает функция «push»? Спасибо всем за вашу помощь
http://www.ourbabynamer.com/popular-baby-names.php?year=1898&top=1000&country=US&order=0&page=1 Это данные я работаю с
«И что действительно делает функция« push »?» Perl имеет отличную встроенную документацию. В любое время, когда вы не знаете, что делает данная встроенная функция, я бы рекомендовал запустить 'perldoc -f' в командной строке (в данном случае 'perldoc -f push'). Если в вашей системе установлен 'perldoc', это должно открыть документацию. Здесь [ссылка] (http://perldoc.perl.org/functions/push.html) на всякий случай, если он не установлен. –
ThisSuitIsBlackNot
'$ id' - плохое имя переменной. Это означает, что это уникальный идентификатор, но, по-видимому, это пол человека. – ikegami
Вам действительно нужен достойный справочник по Perl, потому что, если вы думаете, что можете нажать на хэш, у вас есть некоторые фундаментальные недоразумения в том, что такое хэш. Есть [несколько книг] (http://shop.oreilly.com/category/browse-subjects/programming/perl.do), которые обеспечивают прочную основу для понимания, поэтому, если вы серьезно относитесь к Perl, d настоятельно рекомендуем найти тот, который соответствует вашим потребностям. – tadman