我有一个散列哈希,我发送到子程序,我想访问它的键和它的值(键和值)。通过引用访问“散列哈希”的内部值
我:
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 2014-09-22 08:14:32
@ user3350919是的,在你的情况下是'$ FilesHash - > {$ file} {$ myline}' – 2014-09-22 08:18:04