Я новичок в Perl и медленно обучаюсь. Мне нужна помощь, чтобы отлаживать этот код. Глядя на предыдущие сообщения, мне удалось отладить его, но я не получаю никакого вывода. Я боюсь, что вы, ребята, можете мне помочь .. очень ценят .. любые советы или ошибки, которые вы все замечаете ..Имея справочную проблему HASH с АНОНИМНЫМ МАССАМИ PERL INCREMENT 1
#!/usr/bin/perl
use strict;
use warnings 'all';
my $structure = [ { a => 1, b => 2, c => 3 }, { d => 4, e => 5 }, [ 6, 7, 8 ], 9, 10, 11, [ 12, 13, 14 ] ];
print addtwo($structure);
sub addtwo {
my $params = shift;
my $s = $params->{$structure};
if (ref($s) eq "ARRAY") {
my $c = 0;
foreach my $e (@{$s}) {
$s->[$c] = addtwo({ structure => $e });
$c++;
}
} elsif (ref($s) eq "HASH") {
if (scalar keys %{$s} == 0) {
return undef;
} else {
foreach my $e (values %{$s}) {
$s->{$e} = addtwo({ structure => $s->{$e} });
}
}
} else {
$s = 1;
}
return my $c;
}
Я упомянул об этом были внесены изменения, насколько я мог, но не существует syntaxx ошибки или выходной, поэтому я застрял. Having HASH reference issue with perl
Not a HASH reference at main.pl line 13.
Из вышеприведенного ввода
[ { a => 1, b => 2, c => 3 }, { d => 4, e => 5 }, [ 6, 7, 8 ], 9, 10, 11, [ 12, 13, 14 ] ]
вывод, который мне нужно, чтобы получить обратно есть
[ { a => 2, b => 3, c => 4 }, { d => 5, e => 6 }, [ 7, 8, 9 ], 10, 11, 12, [ 13, 14, 15 ] ]
Задача состоит в том, чтобы изменить и добавить заявления для получения выходных данных.
Кроме того, я написал это к моему пониманию
sub addone {
my ($aref) = @_;
for my $elem (@$aref){
if (ref $elem eq 'ARRAY'){
print "array:\n";
my $var = "@$elem" ;
print "$_," for @$elem;
}
elsif (ref $elem eq 'HASH'){
print "hash:\n";
print "$_ => $elem->{$_}," for keys %$elem;
}
else {
$elem+1;
print "$elem,";
}
}
}
Выход не как ожидалось, я не могу получить доступ к значению массива и хэш, чтобы увеличить его. Как увеличить значения и сохранить их в желаемом выходе?
Я получаю это
Useless use of addition (+) in void context at main.pl line 29.
a => 1,b => 2,c => 3,e => 5,d => 4,6,7,8,9,10,11,12,13,14,
Вам следует описать, что должен делать ваш код, вместо того, чтобы люди угадывали ваши намерения из кода. И название должно быть более описательным и меньше ВЕРХНИЙ. –
Как-то связано: http://stackoverflow.com/questions/41860863/having-hash-reference-issue-with-perl – mob
Это домашнее задание? – Borodin