0
다음 코드는 해시를 동적으로 만드는 것입니다. 나는 서브 루틴의 else
부분에 return
문을 제공하지 않는 경우에, 나는 Perl 서브 루틴 - return
$VAR1 = {
'fruit' => { 'apple' => 'skin' } };
를 얻을 수 있지만,
return
문을 주면 내가 원하는 무엇인가하는
$VAR1 = {
'fruit' => {
'apple' => {
'red' => 'skin'}
}
};
를 얻을.
이 차이점은 무엇입니까? 누군가 나를 교육 시키실 수 있습니까? 서브 루틴에서 반환을 지정하지 않는 경우
sub construct_hash{
my ($hash, $value, $head, @tail) = @_;
if(@tail){
$hash = { $head => construct_hash(\%{$hash}, $value, shift @tail, @tail)} ;
}else{
$hash->{$head} = $value;
return $hash;
}
}
my %h;
my @keys = qw (fruit apple red);
my $value = 'skin';
print Dumper construct_hash(\%h, $value, shift @keys, @keys);
VAR1 = { '과일'=> { '사과'=> '피부'}}를 반환합니다. 내가 '반환'진술을하지 않으면 $ 값이 아닙니다. – arshad
'return'이 없다면, 서브 루틴은 마치'return $ value'가있는 것처럼 작동합니다. – choroba
Nit : [기술적으로] (http://www.perlmonks.org/?node_id=790129) 스칼라 할당은 LHS로 평가되므로 '$ value -'가 아닌'$ hash -> {$ head} '가 반환됩니다. . – ikegami