私はperlを使い慣れておらず、ゆっくりと学習しています。私はこのコードをデバッグするのに助けが必要です..前の投稿を見る私はそれをデバッグすることができましたが、私は出力を得ません..私はあなたが私を助けることができます苦労している..多くの評価..すべてのヒントやバグは、 ..PERL INCREMENT ANONYMOUS ARRAYでHASH参照の問題が発生しました。
#!/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;
}
私はこれまでの変更を言及していますが、構文xエラーや出力がないので、私は立ち往生していません。上記の入力
[ { a => 1, b => 2, c => 3 }, { d => 4, e => 5 }, [ 6, 7, 8 ], 9, 10, 11, [ 12, 13, 14 ] ]
私は戻って取得する必要があり、出力からHaving HASH reference issue with perl
Not a HASH reference at main.pl line 13.
IS
[ { 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