我有一個散列哈希,我發送到子程序,我想訪問它的鍵和它的值(鍵和值)。通過引用訪問「散列哈希」的內部值
我:
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