해시 중 해쉬가 있는데 서브 루틴으로 보내고 해당 키와 해당 값 (키와 값 모두)에 액세스하려고합니다.참조로 "해시 해시"의 내부 값에 액세스
내가 가진 :
sub replace_sub {
my ($result_dir, $FilesHash) = @_;
foreach my $file (keys %{$FilesHash}) {
open(INPUT_FILE, "$result_dir/$file") or die "Can't create output file\n";
my @LINES = <INPUT_FILE>;
open(my $output_file, ">", "$result_dir/$file") or die "Can't create output file\n";
foreach my $myline (keys %{ $FilesHash{$file} }) {
for (my $i = 0; $i <= $#LINES; $i += 1) {
if ($LINES[$i] =~ m/$myline/) {
my $line = $LINES[$i];
$LINES[$i] =~ s/\Q$line\E/\/\/ $line $FilesHash{$file}{$myline}\n/g;
}
}
}
print $output_file @LINES;
close(INPUT_FILE);
close($output_file);
}
}
하지만 내부 해시 값에 액세스하는 방법을 질수 그림, 그렇게하려고 코드 라인은 다음과 같습니다
my $myline (keys %{ $FilesHash{$file} })
및
$LINES[$i] =~ s/\Q$line\E/\/\/ $line $FilesHash{$file}{$myline}\n/g;
어떻게 액세스 할 수 있습니까? 나는 그런 식으로 subroutin를 호출에 계획입니다
:
replace_sub ($result_dir, \%Hash)
올바르게 이해하면 예제 $ v2에서 내부 값이 유지됩니까? 예를 들면 :'my % Hash = ("external_key"=> { "inner_key"=> "inner_value",},); '$ v2 = "inner_value"보다? – user3350919
@ user3350919 네, 그리고 당신의 경우에는'$ FilesHash -> {$ file} {$ myline}' –